我正在使用脚本并找到以下内容,我真的找不到任何关于它的含义的信息
(function($) {
$(document).ready(function(e) {
... bla bla bla ...
});
}) (jQuery);
是(function($){}) (jQuery);
一样的$(function () {});
吗?如果是这样,为什么有人会定义两次document.ready
?
我正在使用脚本并找到以下内容,我真的找不到任何关于它的含义的信息
(function($) {
$(document).ready(function(e) {
... bla bla bla ...
});
}) (jQuery);
是(function($){}) (jQuery);
一样的$(function () {});
吗?如果是这样,为什么有人会定义两次document.ready
?
不,不一样。它是一个匿名函数,它被传递给 jQuery 对象,以确保它可以作为$
函数范围内的局部变量使用,即使全局变量$
被另一个库覆盖。$(function () { })
它与和完全不同$(document).ready(function () { })
。
在jQuery 插件编写文档中推荐使用这种特定模式:
[创作插件时]最好将 jQuery 传递给 IIFE(立即调用函数表达式),将其映射到美元符号,这样它就不会在其执行范围内被另一个库覆盖。
(function( $ ) { $.fn.myPlugin = function() { // Do your awesome plugin stuff here }; })( jQuery );
是
(function($){}) (jQuery);
一样的$(function () {});
吗?
不。第一个是立即调用匿名函数,主要用于防止全局范围的污染。在这种情况下,它还用于确保它$
是对 的引用jQuery
,而不用担心会覆盖$
其他地方。
第二个是用 jQuery绑定文档就绪处理程序的简写。
更多阅读:
不,它不是,(function($){}) (jQuery);
是一个 IIFE(立即调用的函数表达式)将 jQuery 作为参数传递并使用$
在函数范围内表示它,因此如果在$
不使用 jQuery.noConflict 的情况下加载另一个使用的库,则不会发生冲突。
没有
(function(){})();
浏览器遇到该脚本时立即执行。.ready() 是整个文档解析完成后触发的事件
不,这不对。它是一个内部带有文档就绪处理程序的闭包。它用于确保$
外壳内的内容是为 jQuery 保留的,并且不会干扰任何其他库。