JavaScript中的"new Array(..)"和"[..]"之间的区别?

Mis*_*hko 5 javascript arrays

var myCars=new Array("Saab","Volvo","BMW");
Run Code Online (Sandbox Code Playgroud)

var myCars=["Saab","Volvo","BMW"];
Run Code Online (Sandbox Code Playgroud)

完全相同的 ?

Guf*_*ffa 25

是的,对于那种情况他们是一样的.

如果您只有一个项目,那就有区别,而且它是数字.这将创建一个包含单个项目的数组:

var myNumbers = [42];
Run Code Online (Sandbox Code Playgroud)

但这会创建一个长度为42的数组:

var myNumbers = new Array(42);
Run Code Online (Sandbox Code Playgroud)

  • 第二个例子不会有'42`项,只有'length`将是'42`.对象中不存在从"0"到"41"的属性,例如:`new Array(42).hasOwnProperty('0'); //假. (5认同)

Dan*_*llo 5

对,他们是.但请注意,当您只将一个数字参数传递给Array构造函数时,您将指定length数组的初始值,而不是第一个项的值.因此:

var myCars1 = new Array(10);
Run Code Online (Sandbox Code Playgroud)

...的行为与以下数组文字不同:

var myCars2 = [10];
Run Code Online (Sandbox Code Playgroud)

......请注意以下事项:

console.log(myCars1[0]);          // returns undefined
console.log(myCars1.length);      // returns 10
console.log(myCars2[0]);          // returns 10
console.log(myCars2.length);      // returns 1
Run Code Online (Sandbox Code Playgroud)

这就是为什么经常建议坚持使用数组文字表示法的原因之一:var x = [].