2013-04-16 97 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實例的實例。這是對競爭框架的一種防範措施,可能還會定義$