什么是(function($){...})(jQuery)?

时间:2013-05-09 12:06:24

标签: javascript jquery

我是一名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:我也不太了解代码是什么......如果可能的话请给它一个提示。

6 个答案:

答案 0 :(得分:3)

这是一个以jQuery为参数调用的自执行函数,在函数签名中重命名为$

由于您不知道页面中是否使用了jQuery.noConflict()(特别是如果您正在编写可插入的代码,如插件),这样您就可以安全地使用函数内的简写$

谁写的实际上是愚蠢的,因为他在函数中使用jQuery:)

它还可以防止变量污染全局命名空间并封装它们,使它们无法从函数外部访问。

答案 1 :(得分:2)

这是为了防止代码干扰名为$的全局变量,以便您也可以使用其他使用$符号的库。

在函数内部,$将仅引用jQuery对象。

参考http://docs.jquery.com/Plugins/Authoring

答案 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)

除了已经说过的内容之外,这个自执行函数封装了所有变量和其他函数,因此主(窗口)命名空间保持未被污染,因为所有变量和函数都是“本地的”。