js中常常定義一個函數用做臨時的命名空間,在這個命名空間內定義的變量都不會污染到全局命名空間(防止局部變量與全局變量衝突)。
複製代碼代碼如下:
function mymodule(){
//模塊代碼
}
mymodule();
可以簡寫為:
複製代碼代碼如下:
(function(){ //mymodule()函數重寫為匿名的函數表達式
//模塊代碼
}( )<span style="color:#ff0000;">)</span>; //結束函數定義並立即調用它
或者:
複製代碼代碼如下:
(function(){
}<span style="color:#ff0000;">)</span>();
這種定義匿名函數並立即調用(自調用匿名函數)的寫法已經非常常見,開始讓人有點摸不著頭腦,jquery的源碼就是這樣寫的:
複製代碼代碼如下:
(function( window, undefined ) {
//jquery的所有代碼
})( window );