【问题标题】:Why jQuery.each() and jQuery.grep() has different parameter orders? [duplicate]为什么 jQuery.each() 和 jQuery.grep() 有不同的参数顺序? [复制]
【发布时间】:2010-01-25 09:30:50
【问题描述】:

我注意到jquery中.each()的回调函数和.grep()函数的参数顺序有区别。

jQuery.grep( array, function(elementOfArray, indexInArray), [ invert ] )

jQuery.each( collection, callback(indexInArray, valueOfElement) )

您是否知道他们更喜欢将 indexInArray 作为 .each() 中的第一个参数和 .grep() 函数中的第二个参数的可能原因?

谢谢, 布拉克·奥兹多安

【问题讨论】:

    标签: jquery parameters


    【解决方案1】:

    我不知道这是否有真正的答案,但让我们看看函数的用法

    • .grep 中,处理数组的元素。该元素的索引不是处理该元素所必需的。它或多或少是可选的,因此是第二个参数。

    • .each 中,实际上不需要任何参数。但是由于可以通过函数内部的this 访问元素,因此将元素设置为第二个参数是有意义的。这样,不必指定两个变量就可以使用索引。
      如果参数顺序相反并且您想使用索引,则必须为元素指定一个变量,您可能无法再使用this但我不确定 em>)。

    所以说到底是为了方便。

    【讨论】:

      【解决方案2】:

      好吧,有人可能会说参数具有相同的顺序。如果你查看源代码,你会看到在 grep 中,回调是这样调用的:

      callback( elems[ i ], i ) )
      

      而在每个(处理数组而不是地图时):

      var value = object[0];
      callback.call( value, i, value )
      

      其中 value 是 this 对象。使用这种调用方法的方式是为了覆盖 this 的值。

      所以我猜,使用 each 的首选方式是使用 this 来引用对象。

      在我看来,这种差异并不是一件好事,因为它会使用户的生活更加艰难。我查了一下,两个版本都是1.0版本引入的,不能说是两种不同的意见造成的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-07
        • 2016-01-09
        • 2017-01-12
        • 2019-06-30
        • 1970-01-01
        • 2020-05-25
        • 2013-02-07
        相关资源
        最近更新 更多