我在看MDN's "Using native JSON"。我有3个关于JSON.stringify
方法的问题。
问题1:
var foo = {
"foundation": "Mozilla",
"model": "box",
"week": 45,
"transport": "car",
"month": 7
},
censor = function (key, value) {
if (typeof value === 'string') {
return;
}
return value;
};
console.log(JSON.stringify(foo, censor)); // String: {"week":45,"month":7}
以上代码工作正常。但为什么下面的代码不能正常工作?
var foo = {
"foundation": "Mozilla",
"model": "box",
"week": 45,
"transport": "car",
"month": 7
},
censor = function (key, value) {
if (typeof value !== 'string') {
return;
}
return value;
};
console.log(JSON.stringify(foo, censor)); // undefined
问题2:
请遵守以下代码:
var foo = {
"foundation": "Mozilla",
"model": "box",
"week": 45,
"transport": "car",
"month": 7
},
censor = function (key, value) {
return 2;
};
console.log(JSON.stringify(foo, censor)); // String: 2
我认为我的代码应该在下面得到字符串,因为“如果你返回一个Number,那么当添加到JSON字符串时,对应于该数字的字符串将被用作属性的值。” (引自https://developer.mozilla.org/En/Using_native_JSON)。
{"foundation":2,"model":2,"week":2,"transport":2,"month":2}
但我只得到一个字符串2
。为什么呢?
问题3:
如果我想获得{"foundation":2,"model":2,"week":2,"transport":2,"month":2}
,我应该如何更改代码?
非常感谢!
答案 0 :(得分:2)
foo
是一个对象({…}
)。对象不是字符串。你审查外部对象,所以它永远不会被递归。2
返回foo
而不是递归到其中