这样做的目的是什么?(function($){//这里的函数代码})(jQuery);

tsd*_*ter 14 javascript jquery function

我正在调试其他人的JavaScript代码,大部分代码都包含如下:

(function ($) {
    //majority of code here...
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

这是怎么回事与($)(jQuery)?我没有被教过这样的代码,也没有见过它们.他们的目的是什么?

同样,没有document.ready,但我认为这是因为代码是在最后读取后立即执行();的?

Rig*_*red 16

var $ = "some value we don't care about";

 // v=====normal plain old function
(function ($) {
 //        ^=======receives jQuery object as the $ parameter

    //majority of code here, where $ === jQuery...

    $('.myclass').do().crazy().things();


})(jQuery);
 //  ^=======immediately invoked, and passed the jQuery object


 // out here, $ is undisturbed
alert( $ ); // "some value we don't care about"
Run Code Online (Sandbox Code Playgroud)

  • 好的,所以基本上这样做的全部意义在于你可以在该函数内部用$()表示法调用jQuery,如果像prototype这样的东西使用$()表示法并不重要,那么在函数之外?...所以实际上它只是让你不必在每次使用没有冲突时编写jQuery()(或其他一些表示法)..这是有道理的 (3认同)
  • 基本上所有的东西,在这里的大多数代码......位,都与代码的其余部分隔离开来.它存在于不同的范围内.如果你在那里创建`var something = 1`,它就不会在全局`window`范围内结束.此结构外部的代码无法覆盖内部的任何内容. (2认同)

mil*_*ose 13

当您需要/需要使用时jQuery.noConflict(),这非常有用,并且全局名称$不是jQuery的别名.您发布的代码允许您使用短句$来表示jQuery匿名函数内部,而不$需要是全局的.