a = [undefined]和a = new Array(1)之间的区别

时间:2015-12-10 10:26:51

标签: javascript arrays object constructor

var a = [undefined, undefined];
var b = new Array(2);

0 in a // returns true
1 in a // returns true
0 in b // returns false
1 in b // returns false

任何人都可以向我解释为什么会这样吗?

1 个答案:

答案 0 :(得分:5)

b = new Array(2);

只是说,b是一个大小为2的数组。但阵列只是空的。它没有任何元素。所以,没有这样的索引。因此,0中尚未1b。这些被称为漏洞。

但是,当你说

var a = [undefined, undefined];

您正在创建一个包含两个元素的数组。因此,它在undefined0处有1。这就是为什么它们都存在于数组中。

注意:当您只是为变量指定一个值而未使用varletconst)声明它时,它将变为全局变量变量