2013-03-04 66 views
2

目前讀取professional javascript for web developers,它是爲討論陣列(即every()filter()等)爲什麼JavaScript中的迭代方法需要(item,index和array)?

它指出有些茫然,你需要傳遞給它帶有三個參數,數組項值的函數迭代方法中,所述位置數組中的項目,以及數組對象,使所有的功能看起來像這樣的:

function(item, index, array){ 

[do something with item] 

} 

爲什麼,在這種情況下,你就需要通過indexarray參數;爲什麼不只是item就足夠了?

+0

對於哪種方法,這本書說這個?還有,它是jQuery(Javascript)。 – 2013-03-04 08:00:52

回答

3

JavaScript不會計算傳遞給函數的參數數量,所以如果您不需要對索引或參數進行一些操作,那麼您只需傳遞一個接受該項目的函數即可。

+0

沒問題,所以如果你想用'item'的上下文做些什麼,你可以選擇傳遞那些東西? – fox 2013-03-04 08:01:31

+2

沒錯。像這樣想。假設你的函數要求你調用'item'的單個參數,當'every()'函數調用你的函數時,它實際上會將所有三個參數傳遞給它,但是因爲你沒有給出2d和3個參數的名字在你的函數中,這些值對你的函數是不可見的。 (從技術上講,你可以通過查看名爲'arguments'的global-ish變量來獲取它們) – 2013-03-04 08:03:41

+1

在這裏,您可以瞭解更多關於'arguments'變量的信息:https://developer.mozilla.org/en-US/docs/JavaScript/參考/ Functions_and_function_scope /參數 – 2013-03-04 08:05:24

相關問題