jQuery $ .each (arr, foo) против $ (arr) .each (foo) - PullRequest
5 голосов
/ 08 июня 2010

В 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]

Есть ли разница или это чисто синтаксис?

Ответы [ 2 ]

8 голосов
/ 08 июня 2010

$().each() - это просто оболочка для $.each(), , вы можете увидеть это в коде ядра :

each: function( callback, args ) {
    return jQuery.each( this, callback, args );
}

Хотя, $(something).each() предназначен для элементов, я не могу обещать, что использование его с простым массивом не сломается позже (маловероятно, что оно сломается, поскольку объекты jQuery являются обернутыми массивами хоть). В данном случае предполагаемое использование - это прямой вызов $.each().

1 голос
/ 08 июня 2010

Нет никакой разницы в способе обработки массива, но только в синтаксисе.

jQuery - это очень свободная библиотека, которая позволяет вам по-разному использовать каждую функцию для вас.

jQuery обрабатывает это так,

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
}

если аргумент first является функцией, тогда this Должен быть массивом IE $([1,2,3,4]).each(callback), в противном случае ожидается, что first - это массив, а second - обратный вызов IE `$ .each (array, callback );

но в любом случае процесс во многом одинаков, просто проверка типа аргумента помогает пользователю потерять способность справляться с ситуацией.

Даже если это не так, как на самом деле обрабатывается каждая, есть несколько функций, которые используют эту технику для создания рыхлости

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...