JQuery document.ready vs самоназванная анонимная функция

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

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

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

Являются ли эти обе функции вызываемыми одновременно? Я знаю, document.ready будет запущен, когда вся HTML-страница будет отображаться браузером, но что касается 2-й функции (анонимная функция самосогласования). Ожидает ли браузер завершения рендеринга страницы или вызывается всякий раз, когда встречается?

Ответы

Ответ 1

  • $(document).ready(function(){ ... }); или короткий $(function(){...});

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

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

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

Ответ 2

(function(){...})(); будет выполняться, как только он встретится в Javascript.

$(document).ready() будет выполняться после загрузки документа. $(function(){...}); является ярлыком для $(document).ready() и делает то же самое.

Ответ 3

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

  • (function($) { ... })(jQuery); на самом деле является конструкцией Javascript, и вся эта часть кода передает объект jQuery в function($) в качестве параметра и запускает функцию, поэтому внутри этой функции $ всегда ссылается на объект jQuery. Это может помочь разрешить конфликты с именами и т.д.

Итак, # 1 выполняется, когда документ загружен, а # 2 запускается немедленно, а объект jQuery с именем $ - сокращенный.

Ответ 4

Следующий код будет выполнен, когда объектная модель DOM (Document object) готова для выполнения кода JavaScript.

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

Коротка для вышеуказанного кода:

$(function(){
  // write code here
});

Нижеприведенный код представляет собой самозапускающуюся функцию анонимного JavaScript и будет выполнен, как только браузер интерпретирует его:

(function(){
  //write code here
})();   // It is the parenthesis here that call the function.

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

(function($){
  //some code
})(jQuery);

Ответ 5

document.ready запускается после того, как DOM "сконструирован". Самозапускающиеся функции запускаются мгновенно - если они вставлены в <head>, перед построением DOM.