2013-03-04 84 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

相关问题