在javascript中定义数组

mcg*_*ilm 25 javascript arrays

所以我想在javascript中创建一个数组,并记住两种方法,所以我只想知道基本差异是什么,以及这两个" 风格 " 是否存在性能差异

var array_1 = new Array("fee","fie","foo","fum");
var array_2 = ['a','b','c'];

for (let i=0; i<array_1.length; i++){
  console.log(array_1[i])
}

for (let i=0; i<array_2.length; i++){
  console.log(array_2[i])
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 44

他们做同样的事情.[]符号的优点是:

  • 它更短.
  • 如果有人做了一些愚蠢的事情,就像重新定义Array符号一样,它仍然有效.
  • 当你只定义一个条目时没有歧义,而当你编写时new Array(3),如果你习惯于看到构造函数中列出的条目,你可能很容易误读它意味着[3],实际上它创建了一个length3和3 的新数组没有条目.
  • 它可能稍微一点(取决于JavaScript的实现),因为当你说new Array,解释器必须查找Array符号,这意味着遍历作用域链中的所有条目,直到它到达全局对象并找到它,而[]它不需要这样做.在正常使用情况下具有任何有形的现实世界影响的可能性很小.尽管如此......

所以有几个很好的理由可以使用[].

优点new Array:

  • 您可以设置数组的初始长度,例如, var a = new Array(3);

几年后我没有任何理由这样做(不是因为学习数组不是真正的数组而且尝试预先分配它们没有意义).如果你真的想,你可以随时这样做:

var a = [];
a.length = 3;
Run Code Online (Sandbox Code Playgroud)

  • `new Array(3)`与`[undefined,undefined,undefined]`不完全相同.在后一种情况下,阵列具有属性"0","1"和"2",而在前者中,阵列不具有这些属性.这可以通过以下事实来说明:`("undefined,undefined,undefined"中的"0")`返回`true`而`(新的Array(3)中的"0")`返回`false`. (5认同)
  • @downvoter:您想分享一些有用的反馈吗? (4认同)