我是一名javascript新手,最近又进入了以下代码。
(function($){
if(!document.defaultView || !document.defaultView.getComputedStyle){
var oldCurCSS = jQuery.curCSS;
jQuery.curCSS = function(elem, name, force){
if(name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[ name ]){
return oldCurCSS.apply(this, arguments);
}
var style = elem.style;
if ( !force && style && style[ name ] ){
return style[ name ];
}
return oldCurCSS(elem, 'backgroundPositionX', force) +' '+ oldCurCSS(elem, 'backgroundPositionY', force);
};
}
})(jQuery);
什么是function($) {...} (jQuery)
?
PS:我也不太了解代码是什么......如果可能的话请给它一个提示。
答案 0 :(得分:3)
这是一个以jQuery
为参数调用的自执行函数,在函数签名中重命名为$
。
由于您不知道页面中是否使用了jQuery.noConflict()
(特别是如果您正在编写可插入的代码,如插件),这样您就可以安全地使用函数内的简写$
。
谁写的实际上是愚蠢的,因为他在函数中使用jQuery
:)
它还可以防止变量污染全局命名空间并封装它们,使它们无法从函数外部访问。
答案 1 :(得分:2)
这是为了防止代码干扰名为$
的全局变量,以便您也可以使用其他使用$
符号的库。
在函数内部,$
将仅引用jQuery对象。
答案 2 :(得分:1)
确保$
与jQuery
的含义相同。其他库可能会改变$
的含义,因此需要这样做。
function($)
为参数调用 jQuery
,因此$
在函数中设置为jQuery
。
答案 3 :(得分:1)
这是一个自动执行的函数,把它想象成jQuery中的document.ready函数,除了这个函数一旦加载就会触发。
(function(){})
将声明该函数,但是通过添加()
,可以立即触发此函数。
您也可以将参数s传递给此函数。 $
实际上是jQuery
的别名,因此为了确保您使用jQuery
,这会作为参数传递,并将其别名为$
,这是惯例。< / p>
(function(myAwesomePlugin){})(jQuery);
这也是有效的。您可以像myAwesomePlugin("#id").click()
...
答案 4 :(得分:1)
基本上它是一个匿名函数,它允许jQuery与其他可能具有$ variable / function的javascript库很好地协同工作。它在解析DOM时立即执行,如果有多个外观则按外观顺序调用。此时,文档不会显示,只是解析了它。
答案 5 :(得分:1)
除了已经说过的内容之外,这个自执行函数封装了所有变量和其他函数,因此主(窗口)命名空间保持未被污染,因为所有变量和函数都是“本地的”。