使用JSON.parse和JSON.stringify克隆JS数组后,为什么数组的“未定义”值转换为“空”?

问题描述

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

以上代码输出将是...。

[1,null,5]

为什么要将第4个值从“未定义”转换为“空”?

解决方法

因为undefined是Java语言类型。 JSON中没有undefined

根据the spec

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