2014-11-24 156 views
1

我是JavaScript新手,我不知道爲什麼這個代碼沒有輸出的原因。爲什麼我不能遍歷這個數組?

function printArray(a) { 
    for (var key in a) { 
     console.log(a[key]); 
    } 
} 
var a = new Array(10); 
printArray(a); 

有什麼不對嗎?

回答

4

空插槽沒有可枚舉的屬性。另外,您幾乎從不想使用for (in)循環來檢查數組的索引。

您應該使用常規的for循環或Array.prototype.forEach()(如果該數組有值,當然)。

function printArray(a) { 
    for (var i = 0; i < a.length; i++) { 
     console.log(a[i]); 
    } 
} 
// or 
function printArray(a) { 
    a.forEach(function(i) { 
     console.log(i); 
    }); 
} 

記住Array.prototype.forEach()可能不會在您的所有目標平臺的支持。

+0

'for'循環是要走的路。 '.forEach()'不會爲實際不存在的成員調用回調。它跳過了那些。 – 2014-11-24 02:09:13

+0

是的,'for loop'是最好的解決方案。 – BlackMamba 2014-11-24 02:18:17

+0

最好的解決方案是在你的數組中有元素。 – Sacho 2014-11-24 02:29:28