JSON.stringify(null)
返回字符串null
。
JSON.stringify(undefined)
返回值undefined
。它不应该返回字符串 undefined
吗?
解析值undefined
或字符串undefined
会得到SyntaxError
。
有人可以解释为什么JSON在undefined
上窒息以及如何在字符串化/解析值时绕过它?
答案 0 :(得分:7)
undefined
无效JSON,因此该功能正常运行。
http://en.wikipedia.org/wiki/JSON#Data_types.2C_syntax_and_example
答案 1 :(得分:2)
if(JSON.stringify(input) === undefined) {
// error handle
}
或
if(input === undefined) {
// error handle
}
else {
JSON.stringify(input);
}
对不起。生活有时很难。这几乎是你必须要做的。
答案 2 :(得分:1)
原因是null
是由一个没有值的变量引起的,所以当转换为JSON时,它会为你提供没有值的JSON,undefined意味着它没有存在,所以你不能创建一个不存在的东西的JSON对象。请检查
if(typeof myvar === 'undefined')
运行之前并在代码中正常处理错误。
通常尽量避免在JS中使用undefined
它们可以在整个地方发生奇怪的事情,并且与null
不同,并且通常以不同的方式处理。