25

jQuery 内の一般的なパターンは、配列の要素とその配列内のインデックスを渡されるコールバックを受け取るメソッドです。ただし、どちらの引数が最初に来るかは完全にランダムに見えます。たとえば、http://api.jquery.comの jQuery ドキュメントから:

  • jQuery.each( collection, callback(indexInArray, valueOfElement) )
  • .each( function(index, Element) )
  • jQuery.map( array, callback(elementOfArray, indexInArray) )
  • .map( callback(index, domElement) )
  • jQuery.grep( array, function(elementOfArray, indexInArray), [ invert ] )
  • .filter( function(index) )

3 つのケース ( jQuery.each.each.map) では、インデックスが最初に来ます。他の 2 つ ( jQuery.grep, jQuery.map) では、要素が最初に来ます。APIが設定されたことは知っていますが、私には矛盾しているようです。

私が見逃しているパターンはありますか、それともランダムですか? これを修正する必要がありますか、それとも黙って暗記する必要がありますか?

4

4 に答える 4

8

完全にランダムではありません。なぜなら :

$.map( $('selector'), function(el, index) { /* element (DOMElement) is first, index optional */ } );
$('selector').map(function(index) { /* 'this' (DOMElement) is first.... index optional */ });

パターンが見えますか?2 番目の例には 2 番目の引数がありますが、便宜的に渡されるだけで、 と同じthisです。

パターンは、最初の引数が常に 2 番目の引数よりも重要であり、最後の引数が最も重要でない (「よりオプション」である) 必要があるというものです。したがって、必要な引数が 1 つだけの場合は、重要度の低い引数をすべて指定する必要はありません。また、 の場合は、 が必要なだけな$(...).eachので、多くの場合、引数さえ必要ありませthisん。

于 2010-08-31T19:14:53.683 に答える
7

それは時々私をイライラさせます-$.each私がいつも台無しにするものです.

フレームワークのさまざまな部分に取り組んでいるさまざまな人/チームが原因だと思います。これはコミュニティ主導のフレームワークであるため、誰も早期に発見できなかった可能性があります。フレームワークが広まった現在、インターネット上のすべてのサイトの 35% を破壊せずに修正することはできません。

修正されるとは思わない - 少なくともそれが私の意見/態度だ。私はそれらを記憶に留めて、最善を尽くさなければなりません!

于 2010-08-31T19:16:17.020 に答える
2

https://learn.jquery.com/using-jquery-core/iterating/によると

警告の言葉:コールバック引数の順序を切り替えます [ 、および と$.map()比較すると]。これは、ECMAScript 5 で利用可能になったネイティブ JavaScript メソッドと一致させるために行われました。$().map$each()$().each().map()

于 2016-11-17T16:07:07.130 に答える
2

Javascript では、使用していないパラメーターを無視できるため (つまり、2 つのパラメーターで呼び出される場合でも、1 つのパラメーターのみを受け取るコールバック関数を定義できます)、一般的に、最初のパラメーターは、最も可能性が高いものです。使用しています。(実際には、this変数は通常、使用する可能性が最も高いデータ項目であり、その後に最初のパラメーターなどが続きます)

于 2010-08-31T19:14:12.600 に答える