2013-10-29 103 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會趕上這個給你。

相關問題