1、JS當即執行函數的寫法函數
方式一、最前最後加括號
工具
(function(){alert(1);}());
方式二、function外面加括號測試
(function(){alert(1);})();
方式三、function前面加運算符,常見的是!與voidspa
!function(){alert(1);}();
void function(){alert(2);}();
2、當即執行函數的參數io
能夠給當即執行函數傳遞參數,例如console
(function(who, when) {
console.log("I met " + who + " on " + when);
} ("Joe Black", new Date()));
記住:function
一、當即函數內部是能夠訪問外部變量的,因此不少狀況下,咱們並不須要傳參數。如:jQuery的window實參,若是不傳入。內部也是能夠直接使用的。變量
二、一般你不該該給當即執行函數傳遞太多的函數,由於它很快會成爲一個負擔——爲了理解代碼是如何工做的,你不得不常常上下滾動源代碼。命名空間
3、當即執行函數的返回值im
像其它任何函數同樣,一個當即執行函數也能返回值而且能夠複製給其它變量,例如
var result = (function () { return 2 + 2; }());
var result = (function () {
return 2 + 2;
})();
4、當即執行函數的好處
一、當即執行函數模式被普遍使用,它能夠幫你封裝大量的工做而不會在背後遺留任何全局變量。
當即執行函數一般做爲一個單獨模塊使用。通常沒有問題,可是,建議在本身寫的當即執行函數前加分號,這樣能夠有效地與前面代碼進行隔離。不然,可能出現意想不到的錯誤。
例如
var c = 12
var d = c
(function () { var e = 14; }())
會報這樣一個錯誤: