0

下面的代码有什么问题?为什么将数组的大小打印为零?

function test() {
  var arr = [];
  for(var i = 0; i < 10; i++)
  {
    console.log('i ->' + i);
    arr.push[i];
  }
  console.log('\n' + 'array length :' + arr.length);
}

--

输出:

i ->0
i ->1
i ->2
i ->3
i ->4
i ->5
i ->6
i ->7
i ->8
i ->9

array length :0

--

它打印为零(0)

4

2 回答 2

11

push是一个函数。

你需要写arr.push(i)而不是arr.push[i]。你在后者中所做的是指arr.push它好像是一个数组,然后尝试访问它的i第 th 下标(或假设它push是一个对象并尝试访问具有相同值的属性i);它实际上与像这样编写单行语句相同:

someArray[i];

这并没有真正做任何事情。

注意:当我打字太快时,我也被这个愚蠢的错误咬过很多次。;)

于 2013-10-29T17:28:56.130 回答
4

因为.push[i]应该.push(i)

您没有收到错误的原因是函数是 JavaScript 中的对象,因此您可以合法地获取和设置函数的属性。

您正在做的是从方法中获取i属性(将是Array.prototype.pushundefiend

console.log(arr.push[i]); // undefined

可能值得注意的是,这jsHint会为您解决这个问题。

于 2013-10-29T17:28:47.450 回答