2013-10-29 79 views
0

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

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

不知道你为什么使用下标运算符'[]'...尝试'arr.push(i);'。 –

+0

感谢您发现错误。 :) – DreamCodeer

回答

11

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

someArray[i]; 

哪一个没有真正做任何事情。

注意:当我输入速度太快时,我被这个愚蠢的错误咬了很多次。 ;)

+0

是的。完成。失误错误。 :( – DreamCodeer

4

由于.push[i].push(i)

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

什么你在做从Array.prototype.push方法(这将是undefiend取的的i财产。

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

也许值得指出的是jsHint会赶上这个给你。

相关问题