在 Javascript 中,如果我使用
Array(10)
创建一个数组,它会创建一个包含 10 个空项的数组。如果我访问该数组中的任何项目,它将返回 undefined
。但是,如果我创建一个长度为 10 的数组并用 undefined
填充它,如下所示:Array(10).fill(undefined)
,并访问该数组的任何项目,它也会返回 undefined
。同样,如果我使用 Number()
将空值强制转换为数字,它会返回 0
。但是,如果我使用 undefined
将 Number(undefined)
强制转换为数字,则会返回 NaN
。如何识别空值与特定的 undefined
值?
您看到的“空”项目只是您的工具方式,表明您拥有一个数组,其属性少于数组长度所指示的属性。
var a = Array(3);
console.log(Object.getOwnPropertyNames(a)); // ["length"]
a.fill(undefined);
console.log(Object.getOwnPropertyNames(a)); // ["0", "1", "2", "length"]
JavaScript 中并不存在真正的空值类型,只是缺少属性,如果您确实需要,可以检测到该属性。
var a = Array(3);
console.log('0' in a);
a.fill(undefined);
console.log('0' in a);