В jQuery, из чего различие между следующими двумя конструкциями jQuery.each
:
// Given
var arr = [1,2,3,4],
results = [],
foo = function (index, element) {
/* something done to/with each element */
results.push(element * element); // arbitrary thing.
}
// construction #1
$.each(arr, foo); // results = [1,4,9,16]
// construction #2
$(arr).each(foo); // results = [1,4,9,16]
Есть ли какое-либо различие или это просто синтаксис?
$ (). Each ()
- это просто оболочка для $. Each ()
, , вы можете увидеть это в основном коде :
each: function( callback, args ) {
return jQuery.each( this, callback, args );
}
Хотя $ (something) .each ()
предназначен для элементов, я не могу обещать, что вы, используя его с простым массивом, не сломаетесь позже (маловероятно, что он сломается, поскольку jQuery хотя объекты являются обернутыми массивами). В данном случае предполагаемое использование - это прямой вызов $. Each ()
.
Нет никакой разницы в способе обработки массива, это чисто синтаксис.
jQuery - очень свободная библиотека, которая позволяет вам использовать преимущества каждой функции по-разному, чтобы вам было удобно.
jQuery обрабатывает this примерно так
function each(first,second)
{
array = (instanceOf this == Array) ? this : ((first instanceOf Array) ? first : second);
callback = (instanceOf second == Function) ? second : first;
//As you can see its testing what types are being sent to the fintion
}
если первый аргумент
является функцией, то this
должен быть массивом IE $ ([1,2,3, 4]). Each (callback)
в противном случае ожидается, что first
- это массив, а second
- это IE обратного вызова `$ .each (array, callback);
но в любом случае процесс почти такой же, просто проверка типа аргумента помогает пользователю не понимать, как справиться с ситуацией.
Даже несмотря на то, что каждый из них на самом деле обрабатывается не так, есть несколько функций, которые используют эту технику для создания разрозненности