为什么数组的大小在javascript中打印为零?

时间:2013-10-29 17:27:32

标签: javascript node.js

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

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)

2 个答案:

答案 0 :(得分:11)

push是一个函数。

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

someArray[i];

哪个什么都没做。

注意:当我输入太快时,我也被这个愚蠢的虫子咬了很多次。 ;)

答案 1 :(得分:4)

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

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

您正在做的是从i方法(将是Array.prototype.push获取undefiend属性。

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

可能值得注意的是jsHint会为你抓住这个。