我有一个函数,里面有一些简单的表达式,添加nums,追加doms等等。 因为我只需要调用它一次,所以一个匿名函数就可以做到。但是我应该选择哪种方式,有什么区别呢?
1: $(document).ready() {})
的简写我经常看到,
$(function(){
var something;
++something;
});
2:在 jquery 插件中找到。它也绑定(bind)到 $(document).ready() 吗?
(function ($) {
var something;
++something;
})(jQuery);
最佳答案
第二个未绑定(bind)到ready
事件。
详细。这:
$(function(){ /* ... */ });
需要定义一个变量$
。 通常这个变量在加载 jQuery 并指向 jQuery 函数时存在。
随后,当您使用函数参数调用 jQuery 函数时,jQuery 会将此函数参数绑定(bind)到 ready
事件。以上相当于
jQuery(function(){ /* ... */ });
它又是
的便捷简写jQuery(document).ready(function(){ /* ... */ });
你的第二个代码片段
(function ($) { /* ... */ })(jQuery);
是否不依赖$
被定义或指向jQuery()
(如果并行加载多个JS框架可能会发生这种情况) .
为了在特定的代码区域内仍然具有 $
的便利性,它创建了一个函数在其中 $
被定义并指向jQuery()
。但是,它没有绑定(bind)到 DOM 事件。
但这会是:
(function ($) {
$(function(){ /* ... */ });
})(jQuery);
此设置用于最小化 JS 框架或依赖于 $
的其他代码片段之间的冲突。 jQuery 插件作者使用它来编写可在多种环境下工作的插件。
如果觉得组合起来太复杂,jQuery还有一个简写功能,可以避免变量冲突,同时绑定(bind)document ready
。但要小心,它只适用于 jQuery 并且有一些缺点。
jQuery(function($) { /* some code that uses $ */ });
更多细节请看这两篇文章:
关于javascript - 2种jquery的写法,有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7474434/