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];