JQuery document.ready vs самоназванная анонимная функция
В чем разница между этими двумя.
Являются ли эти обе функции вызываемыми одновременно?
Я знаю, 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.