Javascript stringify(未定义)不是字符串
Javascript stringify(未定义)不是字符串,javascript,json,Javascript,Json,JSON.stringify(null)返回字符串null JSON.stringify(未定义)返回值undefined。它不应该返回未定义的字符串吗 解析值undefined或字符串undefined会产生SyntaxError 有人能解释一下为什么JSON会阻塞未定义的,以及在字符串化/解析值时如何绕过它吗 if(JSON.stringify(input) === undefined) { // error handle } 或 对不起。生活有时很艰难。这就是您必须要做的。未定义
JSON.stringify(null)
返回字符串null
JSON.stringify(未定义)
返回值undefined
。它不应该返回未定义的字符串吗
解析值undefined
或字符串undefined
会产生SyntaxError
有人能解释一下为什么JSON会阻塞未定义的,以及在字符串化/解析值时如何绕过它吗
if(JSON.stringify(input) === undefined) {
// error handle
}
或
对不起。生活有时很艰难。这就是您必须要做的。未定义的
不是有效的JSON,因此函数工作正常
原因是null
是由一个没有值的变量引起的,因此当转换为JSON时,它会给你一个没有值的JSON,未定义意味着它根本不存在,所以你不能创建一个不存在的JSON对象。检查一下
if(typeof myvar === 'undefined')
在运行它并在代码中优雅地处理错误之前。
一般来说,在你的JS中尽量避免未定义的
,它们可能会导致到处都是奇怪的事情,并且与null
不同,通常处理方式也不同 为了避免这个问题,可以尝试JSON.stringify(myvar?myvar:*ERROR*”)
或JSON.stringify(myvar | |“*ERROR*”)
“它不应该返回未定义的字符串吗?”否。未定义的
不是<代码>JSON.stringify({foo:'bar',baz:undefined})=='{foo:'bar}'
undefined
也是您跳过值的方式。JSON.stringify(undefined)
它与调用JSON.stringify()
(即没有任何参数)一样。Javascript有点奇怪。属性可以存在,但仍然未定义:window.x=未定义;console.log(window.x);console.log(窗口中的x);//未定义,true
true,可以定义类似的未定义undefined=“hello”
。我喜欢JavaScriptAs,因为ECMAScript的最新版本undefined
是不可写的,所以undefined
的值保持不变,但在旧版本中,它确实会覆盖undefined
的值。
if(typeof myvar === 'undefined')