Rei*_*gel 39 javascript jquery
我见过这个(我也在使用它):
$(document).ready(function(){
// do jQuery
})
Run Code Online (Sandbox Code Playgroud)
而这(我最近尝试过):
(function(){
// do jQuery
})(jQuery)
Run Code Online (Sandbox Code Playgroud)
两者都很好.
两者有什么不同(除了看起来如何)?
哪一个更合适?
Dou*_*ner 39
您显示的第二个示例是自执行匿名函数.您使用的每个单独的JS文件都可能从使用它中受益.它提供了一个私有作用域,您使用该var关键字声明的所有内容仅保留在该作用域内:
(function($){
var special = "nice!";
})(jQuery);
alert(special); // would be undefined
Run Code Online (Sandbox Code Playgroud)
第一个示例是$(document).ready可以操作DOM时触发的简写.
关于它的一些很酷的事情.首先,您可以在自执行功能中使用它:
(function($){
$(function(){
// Run on DOM ready
});
// Run right away
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
其次,如果您需要的只是文档中的几行,您可以将私有范围和DOM就绪函数组合在一起,如下所示:
jQuery(function($){
// $ = jQuery regardless of what it means
// outside this DOM ready function
});
Run Code Online (Sandbox Code Playgroud)
Jac*_*kin 31
第一个示例在构建DOM树时运行该函数.第二个示例立即运行该功能.
如果你仔细观察,在第二个例子中,在函数声明之后有两个括号(在这种特殊情况下,你将全局jQuery对象作为参数传入以避免冲突),从而立即调用函数
正确使用的功能取决于您希望函数运行的时间.如果你想在DOMReady(ready事件)上运行一个函数,你可以使用$( document ).ready你提到的或简写$( function() {...} ).
否则,如果要立即运行函数并具有匿名函数作用域,请使用第二个示例.
除上述所有答案外,jQuery还提供了三种可以使用的初始化方法:
与大多数浏览器兼容的传统方法,请参见代码:
$(document).ready(function () {
});
Run Code Online (Sandbox Code Playgroud)
速记方法,请参见代码:
$(function () {
});
Run Code Online (Sandbox Code Playgroud)
隐式方法,请参见代码:
$().ready(function () {
});
Run Code Online (Sandbox Code Playgroud)
它们都适用于现代浏览器并且可以安全使用。