如何最好地说"在文档就绪时执行此代码"?

tem*_*ame 1 javascript jquery

当我第一次学习JavaScript时,我习惯于在页面加载的时候包装我想要执行的任何脚本,如下所示:

$(function() {
    //code
});
Run Code Online (Sandbox Code Playgroud)

从那时起我学到了更多,我的印象是我可以轻松地抛出jQuery并写下:

(function(){
    //code
})();
Run Code Online (Sandbox Code Playgroud)

这两种方法在最终结果中是否相同?是一个更好的?我完全弄错了其中一个或两个?"执行文档就绪"的标准最佳实践是什么?

elc*_*nrs 6

他们根本不是一回事.第一个是document.ready事件,通常如下所示:

$(document).ready(fn);
Run Code Online (Sandbox Code Playgroud)

但jQuery允许您使用快捷方式:

$(fn);
Run Code Online (Sandbox Code Playgroud)

第二个代码是IIFE(立即调用函数表达式),它所做的只是创建一个闭包,因此您不会将变量暴露给全局范围,然后立即执行.

使用jQuery时,将所有代码放在ready事件中是一种很好的做法,顺便说一下,你也创建了一个闭包,所以那里的所有东西都是"私有的".但是,如果在结束body标记之前添加代码,则不需要ready事件.您可以根据需要使用尽可能多的IIFE,但通常只使用一个就绪事件,因为事件只运行一次.

总之,document.ready事件发生时触发.IIFE允许您封装代码.