以下代码有什么问题? 为什么打印数组的大小为零?
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)
答案 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
会为你抓住这个。