Знак доллара перед самостоятельным объявлением анонимной функции в JavaScript? - PullRequest
36 голосов
/ 30 сентября 2011

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

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

И

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

Ответы [ 5 ]

46 голосов
/ 30 сентября 2011

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

22 голосов
/ 30 сентября 2011

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

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

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

4 голосов
/ 30 сентября 2011

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

3 голосов
/ 30 сентября 2011

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

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

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

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

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

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

1 голос
/ 16 ноября 2016
$(function () {
    // It will invoked after document is ready
});

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

(function () {
    // It will invoked instantly after it is created
})();
...