jQuery.each
そうでなければ優れた機能が(現在の)ネイティブとは異なるように設計されているのはなぜArray.forEach
ですか? 例:
var arr = ['abc','def'];
arr.forEach(function(entry, index) {
console.log(entry); // abc / def
});
これは絶対に理にかなっています。しかし、jQuery はindex
最初の引数として配置することを選択しました。
$.each(arr, function(index, entry) {
console.log(entry);
});
この設計上の決定の背後にある理由を知っている人はいますか? 私は常に$.each
広範囲に使用してきましたが、インデックスはめったに使用されないため、最初の引数であることに常に悩まされていました。jQueryが直接参照を実装していることは知っていますが、そうするとthis
非常に混乱します:
var arr = ['abc','def'];
$.each(arr, function() {
console.log(this === 'abc'); // false both times, since this is a String constructor
});
それほど気になるわけではありませんが、最も一般的な新しい配列関数にはネイティブのポリフィルを使用することを好みますが、設計上の決定について常に興味を持っていました。ブラウザがネイティブforEach
とレガシーサポートを実装する前に、古い時代に作成されたのかもしれません。それとも...?
それとも、ネイティブオブジェクトでも使用できるため、このように設計されているので、コールバックの値の前にキーを配置するのが「理にかなっています」...?
補足:underscore.js(およびおそらく他のライブラリ)が逆の方法で実行することを知っています(ネイティブ関数により似ています)。