2016-06-23 8 views
0

JavaScriptメソッド(イテレータ)の大部分で、最初の引数は要素で、2番目の引数はインデックスです。しかし、jQueryの場合、常に2番目の引数は要素で、最初の引数はインデックスです。彼らはなぜ異なったフォーマットですか?どちらも地図、フィルタなどのメソッドを含んでいるので、それらの間の混乱を避けるためのものですか?その背後には特別な意味がありますか?私は知りたいだけのことが好きです。JQueryとJavaScriptメソッド

+1

いいえ、ありません。この場合、jQueryは反抗的です。 ['$ $ .map'](http://api.jquery.com/jquery.map/)と[' $ .fn.map'](http://api.jquery.com/map/)の引数を参照してください。コールバック。 – undefined

+0

@Vohuman:これは '$ .map'の最初の引数が値であることを示しています...私は気付かなかった: –

+0

あなたはそれを期待していなかったからです。これは矛盾していて混乱する機能です。 – undefined

答えて

2

これは、jQueryがthisに依存しているためです。それは要素イテレータを必要としません。バニラJSで

$('selector').each(function(){ 
    // 'this' refers to unwrapped jQuery selector element; no need for arguments == cleaner code 
    var $this = $(this); 
}); 

、イテレータはパラメータに依存している:

[].forEach(function(el, index){ 
    // 'this' refers to Window object; use the argument 
    el.querySelector('foo') 
}); 

jQueryのthisを使用してスコープの要素を利用することができますので、それは本当に引数を必要としません。以前のバージョンでは要素が第2引数として存在するかどうかを確認するためにもライブラリの履歴を調べなければなりません。

+0

あなたは答えをもっと詳しく説明できますか?この1つは明らかではありませんこれはコメントのようなものです – guradio

+1

@ guradioあなたが答えを冷やす場合は更新されます;) – BotNet

+0

ええ、それは理由かもしれないので、値の引数はあまり重要なここに持っていません:) –

関連する問題