Как знак $ в "jQuery(function($){...}") ссылается на jQuery?

Ниже написано, что знак $ относится к jQuery. Мне нужна помощь, чтобы понять, как?

jQuery(function($){
    // Here `$` refers to jQuery
});

3 ответа

Решение

Когда вы передаете функцию в jQuery следующим образом:

jQuery(function() {
    ...
});

Это то же самое, что и использование обработчика jQuery "document ready":

jQuery(document).ready(function() {
    ...
});

однако аргумент, передаваемый этой функции, на самом деле сам является глобальным объектом jQuery - просто большинство таких обработчиков никогда не используют этот параметр. Следовательно, настоящая подпись такова:

jQuery(document).ready(function($) {
    ...
});

так, в рамках этой функции $ является локальным псевдонимом для глобального объекта jQuery. Имя переменной может быть чем угодно, но $ это популярный псевдоним для jQueryи глобальный псевдоним по умолчанию, если вы не позвоните jQuery.noConflict(),

Это описано более подробно в параграфе "Псевдоним пространства имен jQuery" на http://api.jquery.com/ready/

Эта функция является так называемой allonymous функцией, в которой jQuery запускает эту allonymous функцию с первым параметром this.

Так что просто для понимания он делает что-то вроде этого:

function jQuery(xx) {
    xx(this);
}

Просто пример, чтобы показать вам, как это возможно

function externalLibrary(b) {
    if(typeof b === 'function') {
        b(externalLibrary);
    }else {
        // other stuff
    }

}

var myFunc = function(aliasOfExternalLibrary) {
    // here aliasOfExternalLibrary is a reference to externalLibrary
}
externalLibrary( myFunc );

jQuery делает то же самое (в одной более сложной системе)

Другие вопросы по тегам