Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript stringify(未定义)不是字符串_Javascript_Json - Fatal编程技术网

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')