2013-01-25 63 views
4

嘗試使用一些不同的方法來生成JavaScript數組時,我偶然發現了一個奇怪的結果。使用mappush的自我引用數組(DEMO):陣列自參考地圖 - 非常奇怪的結果

a=[1,1,1,1,1,1,1,1,1,1]; 
a=a.map(a.push,a); 

我得到以下結果(在Chrome):

[13,16,19,22,25,28,31,34,37,40] 

任何人都可以解釋,爲什麼?

+1

「a」的一個更好的選擇和逗弄你的'地圖'可能是有益的:http://jsfiddle.net/ambiguous/kchXW/1/ –

回答

5

對於a每個元素,push被稱爲與該元件時,該元素的索引,並且該陣列正被遍歷。對於數組中的每個元素,然後我們添加這三個附加元素。這佔原始數組中每個元素的長度增加了三個。 push的結果是元素添加後數組的長度,因此得到的數組(從map)是一個數組,其在每次push回調完成後都保存着a數組的長度。

請參閱mappush的文檔。

+0

謝謝。在你的回答和@ mu的樣品小提琴之間,它全部清除了。我的頭腦中並沒有完整的圖片,代碼是幹什麼的:) – mellamokb