2016-02-15 79 views
2

正如標題所說,爲什麼我不能映射包含undefined項目的數組?爲什麼不能映射'undefined'數組

var foo = new Array(3); 
// [ , , ] 
var bar = [null, null, null]; 
// [null, null, null] 

foo.map(function(val){return 'test'}); 
// [ , , ] 
bar.map(function(val){return 'test'}); 
// ['test', 'test', 'test'] 

也許是愚蠢的問題,但我真的想知道原因。

謝謝。

+3

「因爲規格說明是這樣的」 – Quentin

+1

*「它沒有被要求丟失數組的元素(也就是說,從未設置的索引,它們已被刪除或從未分配過值)。」* - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map – deceze

回答

1

MDN

地圖調用提供回調函數一次用於在陣列中的每個元件中,爲了,並構造從結果的新數組。 僅對已分配值的數組的索引(包括未定義)調用回調。它不會被調用缺少數組的元素(也就是說,從未設置過的索引,這些索引已被刪除或從未分配過值)

相關問題