0

为什么大多数 jQuery 插件都是基于结构的:

(function($)
{
    // do stuff with $
})(jQuery)

我认为这种结构等同于这种简单的结构:

// do stuff with object 'jQuery'

因为我认为第一个结构定义了一个函数并使用输入参数调用它jQuery,为什么我们应该这样做,我们可以忽略该函数并使用对象执行我们的代码而jQuery无需任何附加函数
有人能告诉我为什么第一个结构更好而且更多用过的?

4

2 回答 2

2

(function($) {和部分旨在将})(jQuery)变量保存在函数内,以避免与其他代码或其他插件发生冲突。

插件函数定义如下:

(function($) {

    $.fn.do_stuff = function() {

        //Do stuff

    }

})(jQuery);
于 2013-07-22T06:38:11.357 回答
1

它(几乎完全)是等价的。这样做的原因主要是方便,jQuery每次都写出来很痛苦,而且它比只使用$. 但是有一个问题:许多其他流行的 javascript 库都使用一个$函数,因此 jQuery 可以在不设置全局变量的“无冲突$”模式下加载。为了让插件在无冲突或正常模式下引用它,它们包括将它包装在您注意到的函数中。

作为一个附带好处,var“do stuff”区域内的任何语句都成为本地函数,而不是全局函数。

于 2013-07-22T06:39:03.807 回答