рассмотрим ваш пример:
test2(JSON.stringify(function (res) {
console.log(res);
}));
в метод stringify надо передавать объект, а вы передаете функцию, это никуда не годится (в данном случае пустой объект):
JSON.stringify({})
вот. передавайте 2 параметра. один строка, другой функция:
function test (str, fn) {
fn(JSON.parse(str));
}
test('{"a": 1, "b": 2}', function (obj) { console.log(obj); });