jQuery插件定义

Raz*_*zor 2 jquery jquery-plugins

有一些关于"标准"jQuery插件定义的东西,我似乎无法理解,似乎没有插件教程解释它.
我见过的大多数插件定义都是这样的:

(function($) {
    $.extend($.fn, {
        pluginName: function( options )
            ...
    });
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

现在,虽然我理解该function($) { ... }部分的作用(确保jquery $即使在noConflict模式下工作,创建一个"私有"方法等),但我不明白为什么第一个字符是(,并以它结束)(jQuery).

是否需要使插件可链接?可以安全地忽略它吗?

编辑

相同定义的变化:

;(function($) { // why is ; there?
Run Code Online (Sandbox Code Playgroud)

rek*_*o_t 6

它只是定义了一个匿名函数并立即调用它,你可以这样想:

var f = function($) { /* Code goes here, can use $ */ };
f(jQuery); // assings jQuery to $ parameter
Run Code Online (Sandbox Code Playgroud)

现在,如果将这两个语句合并为一个,您将得到:

(function($) { /* Code goes here */ })(jQuery);
Run Code Online (Sandbox Code Playgroud)

这才是真的.以这种方式使用匿名函数执行此操作不会使用无用的变量名称污染全局范围,并且$即使在noConflict模式下也允许使用该符号.