在Javascript中声明数组时,哪一个是最佳实践?

use*_*223 5 javascript arrays web-applications

可能重复:
使用{}或新的Object()在JavaScript中创建一个空对象?

当我想声明一个新数组时,我使用这种表示法

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

但是当在线测试时,例如在jsbin上,警告会向我发出"使用数组文字符号[]"的信号.

我没有找到避免使用构造函数的理由.在某种程度上效率低于使用[]?还是不好的做法?

是否有充分的理由使用var arr = [];而不是var arr = new Array();

Que*_*tin 7

[] 是:

  • 更清晰
  • 不受制于new Array(3)new Array(3,3)做完全不同的事情
  • 不能被覆盖.

示例代码:

var a = new Array(3);
var b = new Array(3,3);
Array = function () { return { length: "!" }; };
var c = new Array();
var d = [];
alert(a.length); // 3
alert(b.length); // 2
alert(c.length); // !
alert(d.length);? // (still) 0????????
Run Code Online (Sandbox Code Playgroud)

此代码实时 - 将尝试创建4个警报!


小智 5

大多数人都使用,var a = []因为道格拉斯克罗克福德这么说.

他的原因包括新的Array()的非直观和不一致的行为:

var a = new Array(5);     // an array pre-sized to 5 elements long
var b = new Array(5, 10); // an array with two elements in it
Run Code Online (Sandbox Code Playgroud)

请注意,new Array()创建一个只包含一个预先指定的数字元素的数组是没有办法的!

使用[]实际上更有效,也更安全!可以覆盖Array构造函数并使其做奇怪的事情,但是你不能覆盖[]的行为.

就个人而言,我总是使用[]语法,同样总是使用{}语法代替新的Object().