Знак доллара перед самостоятельным объявлением анонимной функции в JavaScript?

В чем разница между этими двумя:

$(function () {
    // do stuff
});

А ТАКЖЕ

(function () {
    // do stuff
})();

5 ответов

Решение

Первый использует jQuery для привязки функции к document.ready событие. Второй объявляет и немедленно выполняет функцию.

$(function() {}); это ярлык JQuery для

 $(document).ready(function() { 
     /* Handler for .ready() called. */ 
 });

В то время как (function() {})(); является выражением функции, вызываемым мгновенно, или IIFE. Это означает, что это выражение (не утверждение), и оно вызывается сразу после его создания.

Они обе являются анонимными функциями, но (function(){})() вызывается сразу, и $(function(){}) вызывается, когда документ готов.

jQuery работает примерно так.

window.jQuery = window.$ = function(arg) {
    if (typeof arg == 'function') {
        // call arg() when document is ready
    } else {
       // do other magics
    }
}

Таким образом, вы просто вызываете функцию jQuery и передаете функцию, которая будет вызываться при готовности документа.

"Самоисполняющаяся анонимная функция" - это то же самое, что и это.

function a(){
    // do stuff
}
a();

Разница лишь в том, что вы не загрязняете глобальное пространство имен.

Один это jquery $(document).ready функция, а другая просто анонимная функция, которая вызывает себя.

$(function () {
    // It will invoked after document is ready
});

Это выполнение функции, как только документы становятся готовыми, означает, что весь HTML должен быть загружен до его выполнения, но во втором случае функция вызывается сразу после ее создания.

(function () {
    // It will invoked instantly after it is created
})();
Другие вопросы по тегам