【问题标题】:What is (function($) {...}) (jQuery)? [duplicate]什么是 (function($) {...}) (jQuery)? [复制]
【发布时间】:2013-05-09 12:06:24
【问题描述】:

我是一个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:我也不太明白代码的用途...如果可能,请给出提示。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

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

    由于您不知道页面中是否使用了jQuery.noConflict()(尤其是如果您正在编写像插件这样的可分发代码),因此您可以在函数中安全地使用简写$

    谁写的实际上很愚蠢,因为他在函数内部使用了jQuery :)

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

    【讨论】:

      【解决方案2】:

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

      在函数内部,$ 只会引用 jQuery 对象。

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

      【讨论】:

        【解决方案3】:

        这是为了确保$jQuery 的含义相同。其他库可能会更改 $ 的含义,因此需要这样做。

        function($)jQuery 作为参数调用,因此$ 在函数内被设置为jQuery

        【讨论】:

          【解决方案4】:

          这是一个自执行函数,就像 jQuery 中的 document.ready 函数一样,只不过这个函数在加载后会触发。

          (function(){}) 将声明函数,但通过添加 () 可以立即触发。 您也可以将参数 s 传递给此函数。 $ 实际上是jQuery 的别名,所以为了确保您使用的是jQuery,这是作为参数传递的,别名为$,这是约定。

          (function(myAwesomePlugin){})(jQuery);

          这也是有效的。你可以像myAwesomePlugin("#id").click()一样使用它...

          【讨论】:

            【解决方案5】:

            基本上它是一个匿名函数,它可以让 jQuery 与其他可能有 $ 变量/函数的 javascript 库很好地配合。它在 DOM 被解析后立即执行,如果有多个出现,则按出现的顺序调用。但此时文档并未显示,它只是被解析。

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-08-25
                • 2012-07-04
                • 2016-02-14
                • 2014-10-06
                相关资源
                最近更新 更多