Нет, IIFE не выполняет код в готовом документе.
1. Просто в IIFE:
(function($) {
console.log('logs immediately');
})(jQuery);
Этот код запускается немедленно, записывает «журналы немедленно», даже если документ не готов.
2. Готово:
(function($) {
$(document).ready(function(){
console.log('logs after ready');
});
})(jQuery);
Немедленно запускает код и ожидает готовности документа и регистрирует «журналы после готовности».
Это объясняет, чтобы лучше понять:
(function($) {
console.log('logs immediately');
$(document).ready(function(){
console.log('logs after ready');
});
})(jQuery);
Это записывает «немедленно» в консоль сразу после загрузки окна, но «журналы после готовности» регистрируются только после того, как документ готов.
IIFE не является альтернативой готовым:
Альтернативой для $(document).ready(function(){})
является:
$(function(){
//code in here
});
Обновлять
Начиная с jQuery версии 3.0 обработчик готовности изменен.
Только следующая форма готового обработчика рекомендуется.
jQuery(function($) {
});
Обработчик готовности теперь асинхронный. а>
$(function() {
console.log("inside handler");
});
console.log("outside handler");
> внешний обработчик
> внутренний обработчик
person
Bhojendra Rauniyar
schedule
24.07.2014
$(document).ready
, в противном случае это не имеет значения. - person Morteza Edalati   schedule 24.07.2014$(function(){ ... });
(это сокращение jQuery для.ready()
) сIIFE
- person Spokey   schedule 24.07.2014$(document).ready()
— это если вы поместите свой тег сценария перед нижней частью тела, и в этом случае DOM еще не готов, и вам нужно дождаться запуска события. - person PlantTheIdea   schedule 17.06.2015