Javascript a=[undefined]和a=新数组(1)之间的差异

Javascript a=[undefined]和a=新数组(1)之间的差异,javascript,arrays,object,constructor,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 只是说,b是一个大小为2的数组。但是数组只是空的。它里面没有任何元素。因此,没有这样的索引。因此,0和1在b中还不存在。这些叫做洞 但是,当你说 b = new

有人能解释一下为什么会发生这种情况吗

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
只是说,
b
是一个大小为2的数组。但是数组只是空的。它里面没有任何元素。因此,没有这样的索引。因此,
0
1
b
中还不存在。这些叫做洞

但是,当你说

b = new Array(2);
您正在创建一个包含两个元素的数组。因此,它在索引
0
1
处有
undefined
。这就是它们都存在于阵列中的原因



注意:当您只给变量赋值,而不使用
var
let
const
)声明变量时,它将成为一个全局变量。

在您的注意中,您忘了谈论严格模式@Rohit请始终使用严格模式!
var a = [undefined, undefined];