なぜそれが起こっているのか理解できません。
私はここでそれを読んだ:
最初の$.eachは、反復子を開始する単一の関数呼び出しを構成します。
2 番目の$(foo.vals).eachは、反復子を開始するために3 つの関数呼び出しを行います。
- 1 つ目は、新しい jQuery ラッパー セットを生成する $() です (このプロセス中に他の関数呼び出しがいくつ行われるかはわかりません)。
- 次に、$().each を呼び出します。
- 最後に、jQuery.each への内部呼び出しを行い、反復子を開始します。
あなたの例では、違いは控えめに言ってもごくわずかです。ただし、ネストされた使用シナリオでは、パフォーマンスが問題になることがあります。
最後に、jQuery Enlightenment の Cody Lindley は、関数呼び出しが関係しているため、1000 回を超える繰り返しに $.each を使用することを推奨していません。通常の for( var i = 0... ループを使用します。
だから私はこの jsperf でそれをテストしました:
(タスク : チェックボックスをオンにしている Tr を見つけて、その tr に色を付けます。)
これはjsbinです
しかし、jsperfを見てください
すべての予想に反して、その反対が真実です。(クロムと FF と IE)
3 つのメソッドを呼び出す (を使用する人$().each
が最も速いなど。
ここで何が起こっているのですか?