我想测试在解析 JSON 字符串时可以提供 reviver 函数的代码重载。
所以这段代码:
JSON.parse('{"p": 5}', function(k, v) { if (k === "") return v; return v * 2; }).p;
产量10
(好的)。
但后来我问自己,“这是什么if (k === "")
东西?” 让我们删除它!:
JSON.parse('{"p": 5}', function(k, v) { return v*2;}).p; //undefined !!
也许是因为 5 是一个整数?让我们尝试parseInt
:
JSON.parse('{"p": 5}', function(k, v) { return parseInt(v)*2;}).p; //undefined !!
很奇怪...
所以我想看看是哪些键(虽然这里只有一个)造成了麻烦:
JSON.parse('{"p": 5}', function(k, v) { alert(v)}).p;
有 2 个警报:
5
[object Object]
恕我直言k
andv
用于key
and value
,实际上这里只有一个键。
这个其他警报是什么?为什么我必须检查if (k === "")
?