什么(function($){...})(jQuery);做?

时间:2013-04-16 11:07:51

标签: javascript jquery cookies

有人可以解释一下这段代码的用途是什么吗?

(function($) {
    $.cookie = function(key, value, options) {
         // Body of the function here
    }
})(jQuery);

以这种方式声明是不是更简单?

function cookie(key, value, options) {
     // Body of the function here
}

2 个答案:

答案 0 :(得分:6)

这称为闭包,以避免与使用$的其他库发生冲突。这样,您可以确保在该函数中使用$并将jQuery作为参数传递。

(function ($) {
   $(function () {
    .......
   });
})(jQuery); //<----passing jquery to avoid any conflict with other libraries.

喜欢 Mootools prototype 等库也使用$,这个闭包用来避免任何冲突。

答案 1 :(得分:4)

您正在创建一个接受$的匿名函数,并且您正在调用它,并传递jQuery。这会创建一个$jQuery的闭包。也就是说,如果您知道jQuery在执行时将是一个jQuery实例,那么您也知道$将是该闭包中的jQuery实例实例。它可以防止可能定义$的竞争框架。