我正在使用脚本并找到以下内容,我真的找不到任何有关含义的信息
(function($) {
$(document).ready(function(e) {
... bla bla bla ...
});
}) (jQuery);
(function($){}) (jQuery);
与$(function () {});
相同吗?如果是这样,为什么有人会定义两次document.ready
?
答案 0 :(得分:3)
不,这不一样。它是一个匿名函数,它传递给jQuery对象,以确保它在函数范围内作为局部变量$
可用,即使全局变量$
被另一个库覆盖也是如此。它与$(function () { })
和$(document).ready(function () { })
完全不同。
jQuery plugin authoring文档中建议使用此特定模式:
[创作插件时] 最佳做法是将jQuery传递给IIFE(立即调用的函数表达式),将其映射到美元符号,以便它不会被其他库覆盖执行范围。
(function( $ ) { $.fn.myPlugin = function() { // Do your awesome plugin stuff here }; })( jQuery );
答案 1 :(得分:2)
(function($){}) (jQuery);
与$(function () {});
相同吗?
没有。第一种是立即调用匿名函数,主要用于防止污染全球范围。在这种情况下,它还用于确保$
是对jQuery
的引用,而不必担心在其他位置覆盖$
。
第二个是the shorthand for binding a document ready handler和jQuery。
更多阅读:
答案 2 :(得分:2)
不,不是,(function($){}) (jQuery);
是一个IIFE(立即调用的函数表达式),它将jQuery作为参数传递,并使用$
在函数范围内表示它,这样如果另一个不会发生冲突使用$
的库在不使用jQuery.noConflict的情况下加载。
答案 3 :(得分:2)
都能跟得上
(function(){})();
浏览器遇到该脚本后立即执行。 .ready()是在解析整个文档后触发的事件
答案 4 :(得分:1)
不,不是。它是一个封闭,里面有一个文档就绪处理程序。它用于确保机箱中的$
是为jQuery保留的,并且不会干扰任何其他库。
答案 5 :(得分:0)