[英]JSON.parse reviver function has n+1 keys?
我想測試代碼重載,它可以在解析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
和v
是key
和value
,實際上這里只有一個鍵。
這是什么其他警報? 為什么我要檢查if (k === "")
?
答案在您提供的鏈接中...
最終使用空字符串和最高值調用reviver,以允許轉換最頂層的值。
v
是k === ""
的情況下的對象本身
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.