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

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

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

и

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

Ответы

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

Они являются анонимными функциями, но (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();

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

Ответ 5

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

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

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