2017-04-19 89 views
3

我知道forEach在JavaScript調用我的回調函數,有三個參數:什麼是的forEach回調函數的第三個參數的點在JavaScript

arr.forEach(function callback(currentValue, index, array) { 
    //your iterator 
}) 

在上面的例子arrarray是相同的陣列和arr存在回調函數關閉。

現在的問題是什麼點將array傳遞給回調函數?

+3

從功能編程的角度來看,它可以讓你保持功能的純淨。 – haim770

+3

我想它可能是對未存儲在變量中的數組文字的引用。 '[1,2,3] .forEach(function(elem,index,arrayReference){...});' – mhodges

回答

6

如果你的回調函數在其他地方宣佈:

function forEachCallback(value, i, array) { 
    // ... 
} 

然後,它不知道它正在使用的陣列爲:

someArray(forEachCallback); 

因爲數組作爲最後一個參數傳遞,這樣的回調可以訪問它。

+0

好吧,函數知道數組,但*爲了什麼目的*? – mortb

+1

@mortb在處理每個單獨單元時,回調可能需要數組中其他單元的值。它可能想知道數組的長度。該數組可能具有其他非數字屬性,這些屬性是執行回調所需的屬性。有很多原因。我不認爲我會說這是常見的,但它有時會發生。 – Pointy

+0

很好的說明。 – mortb

5

該回調不必與forEach調用的範圍相同。在這種情況下,第三個參數將確保回調對該數組有一些引用。

相關問題