2013-04-16 68 views
-1

有人能解释我是什么代码呢?

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

只是以这种方式宣布是不是更简单?

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

http://docs.jquery.com/Plugins/Authoring IIFE(立即调用函数表达式) – arjuncc

回答

6

这就是所谓的封闭,以避免其使用$与其他库冲突。这样,您可以确保在该函数中使用$并将jQuery作为参数。

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

Mootools的原型等库也使用$这个封闭用于避免任何冲突。

+2

这是一个封闭太多。更好地利用'的jQuery(函数($){...});' – Bergi

+0

@Bergi绝对要短得多的方式。 – Jai

4

你正在创建一个接受$一个匿名函数,你会立即调用它,传递jQuery。这会造成一个关闭,其中$jQuery。也就是说,只要你知道jQuery将在执行时jQuery的情况下,你也知道,$将在关闭一个jQuery实例的实例。这是对竞争框架的一种防范措施,可能还会定义$