不,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 不能替代 Ready:
替代方案为$(document).ready(function(){})
is:
$(function(){
//code in here
});
Update
从 jQuery 3.0 版开始,就绪处理程序发生了变化。
仅建议使用以下形式的就绪处理程序。 https://jquery.com/upgrade-guide/3.0/#deprecated-document-ready-handlers-other-than-jquery-function
jQuery(function($) {
});
就绪处理程序现在是异步的。 https://jquery.com/upgrade-guide/3.0/#breaking-change-document-ready-handlers-are-now-asynchronous
$(function() {
console.log("inside handler");
});
console.log("outside handler");
> 外部处理程序
> 内部处理程序