JS高级程序设计第三版中的JS对象序列化疑惑

obj = {a: 11, b: 22, c: 0}json = JSON.stringify(obj, function(k,v){ if(typeof v === \u0026#39;number\u0026#39;){ if(v !== 0){ return \u0026#39;0\u0026#39; + v }else{ return // 或者 return undefined 或者省略 } }else{ return v }})这段代码正确结果是\u0026#39;{"a":"011","b":"022"}\u0026#39;在 Firefox 3.5 中是\u0026#39;{"a":"11","b":"22"}\u0026#39;你可以把 return \u0026#39;0\u0026#39; + v 改成 return \u0026#39;qwerty\u0026#39;,在Firefox 3.5 中结果不会变。因为 ff3.5 只判断 return的结果是不是 undefined,是的话就忽略这个属性(c: 0), 不是就 pass。而正确的处理是:如果 return 了 undefined,就忽略这个属性,否则用 return 的值(a: \u0026#39;011\u0026#39;)替代原有属性(a: 11)。


    推荐阅读