Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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/3/arrays/13.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 使用JSON.parse克隆JS数组后&;JSON.stringify,为什么使用数组';s";“未定义”;值转换为“;空“;?_Javascript_Arrays_Clone - Fatal编程技术网

Javascript 使用JSON.parse克隆JS数组后&;JSON.stringify,为什么使用数组';s";“未定义”;值转换为“;空“;?

Javascript 使用JSON.parse克隆JS数组后&;JSON.stringify,为什么使用数组';s";“未定义”;值转换为“;空“;?,javascript,arrays,clone,Javascript,Arrays,Clone,上述代码的输出将是 var arr1 = [1, 2, 3, undefined, 4, 5]; var arr2 = JSON.parse(JSON.stringify(arr1)); console.log(arr2); 为什么它将它的第四个值从“undefined”转换为“null”?因为undefined是一种Javascript类型。JSON中没有未定义的 根据: JSON可以表示四种基本类型(字符串、数字、布尔值和null)和两种结构化类型(对象和数组) ECMA-404(不是开玩

上述代码的输出将是

var arr1 = [1, 2, 3, undefined, 4, 5];
var arr2 = JSON.parse(JSON.stringify(arr1));
console.log(arr2);

为什么它将它的第四个值从“undefined”转换为“null”?

因为
undefined
是一种Javascript类型。JSON中没有未定义的

根据:

JSON可以表示四种基本类型(字符串、数字、布尔值和null)和两种结构化类型(对象和数组)


ECMA-404(不是开玩笑,标准的)不知道
undefined
。undefined不是有效的json,因此json.parse将其转换为null。然后当转换回来时,因为null是有效的JS,所以它保留null
[1, 2, 3, null, 4, 5]