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

Roh*_*hit 2 javascript arrays constructor object

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
Run Code Online (Sandbox Code Playgroud)

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

the*_*eye 5

b = new Array(2);
Run Code Online (Sandbox Code Playgroud)

只是说,b是一个大小为二的数组.但阵列只是空的.它没有任何元素.所以,没有这样的索引.所以,01是不是在尚未有b.这些被称为洞.

但是,当你说

var a = [undefined, undefined];
Run Code Online (Sandbox Code Playgroud)

你正在创建一个包含两个元素的数组.所以,它有undefined索引01.这就是为什么它们都存在于数组中.


注意:当您只是为变量赋值而不用var(letconst)声明它时,它将成为全局变量.