В большинстве методов обработки JavaScript (итератор) первый аргумент - это элемент, а второй - индекс. Но в случае jQuery всегда второй аргумент является элементом, а первый - индексом. Почему они отформатировались по-другому? Это для избежания путаницы между ними, поскольку оба содержат такие методы, как карта, фильтр и т. Д. Есть ли какое-то особое значение для этого? Мне просто интересно узнать.Методы JQuery и JavaScript
0
A
ответ
2
Это связано с тем, что jQuery полагается на this
; ему не нужен элементный итератор.
$('selector').each(function(){
// 'this' refers to unwrapped jQuery selector element; no need for arguments == cleaner code
var $this = $(this);
});
В Vanilla JS, итераторы опираются на параметрах:
[].forEach(function(el, index){
// 'this' refers to Window object; use the argument
el.querySelector('foo')
});
Поскольку JQuery может использовать контекстный элемент с помощью this
, это на самом деле не нужно аргументы. Мне пришлось бы искать историю библиотеки, чтобы даже увидеть, существовал ли этот элемент в качестве второго аргумента в более ранних версиях.
Нет, нет. В этом случае jQuery является повстанцем. См. Аргументы ['$ .map'] (http://api.jquery.com/jquery.map/) и [' $ .fn.map'] (http://api.jquery.com/map/) обратные вызовы. – undefined
@Vohuman: yup, в случае '$ .map' первый аргумент является значением ... я этого не заметил :) –
Потому что вы этого не ожидали. Это непоследовательность и запутанная особенность. – undefined