2013-07-09 53 views
3

我試圖陣列的「推」的方法,通過直接的forEach調用另一個數組:綁定的Array.push

result = [] 
l1 = [1] 
f = result.push.bind(result) 
l1.forEach(f) 

而結果呢:

> result 
[ 1, 0, [ 1 ] ] 

如果我這樣做,代之以:

l1.forEach(function (x) { f(x); }) 

然後一切工作正常。到底是怎麼回事?

回答

6

要了解什麼是在運行準備這個代碼剪斷

[1].forEach(function() { 
    console.log(arguments); 
}); 

而且你會收到

[1, 0, Array[1]] 

功能,提供給forEach方法被調用以以下的參數每個數組元素:

  1. 陣列元件
  2. 元素位置
  3. 陣列本身

所以,好像你不能做你想做的與綁定push調用特定的數組實例...

+0

衛生署,它完全沒有發生對我來說,forEach可以傳遞3個參數。謝謝! –