JSON文字列を解析するときにreviver関数を提供できるコードオーバーロードをテストしたかったのです。
したがって、このコード:
JSON.parse('{"p": 5}', function(k, v) { if (k === "") return v; return v * 2; }).p;
収量10
(ok)。
しかし、それから私は自分自身に、「これは何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 !!
とても奇妙な...
そこで、問題の原因となっているキー(ここには1つしかありませんが)を確認したいと思いました。
JSON.parse('{"p": 5}', function(k, v) { alert(v)}).p;
2つのアラートがありました:
5
[object Object]
IMHOk
とv
はとのためkey
でありvalue
、実際、ここには1つのキーしかありません。
この他のアラートは何ですか?そして、なぜ私はチェックしなければならないのif (k === "")
ですか?