Функция самостоятельного вызова в качестве готового обратного вызова JQuery Ducument

В чем разница между

$(function() {
    // bind some event listeners
});

а также

$(function() {
    // bind some event listeners
}());

4 ответа

Решение
$(function() {
    // bind some event listeners
});

В вышеприведенном случае функция передается в jquery, который будет выполнен, когда документ будет готов.

$(function() {
    // bind some event listeners
}());

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

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

Эта функция вызывается, когда DOM готов, что означает, что вы можете начать запрашивать элементы, например. .ready() будет использовать разные способы в разных браузерах, чтобы убедиться, что DOM действительно готов.

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

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

$(function() { ... });

это просто сокращение jQuery для:

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

Выражение функции, вызываемое немедленно (или IIFE), вместо этого является выражением "немедленно выполнено", соглашение заключено в круглые скобки, но каждый вид выражения выполняется немедленно, см. Следующие функции IIFE:

(function() {
    console.log("IIFE 1");
}());

+function() {
    console.log("IIFE 2");
}();

1-function() {
    console.log("IIFE 3");
}();

var f = 50 * function() {
    console.log("IIFE 4");
}();

Я надеюсь, это было ясно, пока.

$(function() {
    // bind some event listeners
});

Этот будет выполняться только тогда, когда DOM полностью загружен, это ярлык для:

$(document).ready(function(){
  // Write code here
}); 

$(function() {
    // bind some event listeners
}());

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

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