js當即執行函數

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、當即執行函數的好處

一、當即執行函數模式被普遍使用,它能夠幫你封裝大量的工做而不會在背後遺留任何全局變量。

二、定義的全部變量都會成員當即執行函數的局部變量,因此你不用擔憂這些臨時變量會污染全局空間。
 
三、這種模式常常被使用在書籤工具(bookmarklets)中,由於書籤工具在任何頁面上運行而且保持全局命名空間乾淨是很是必要的;
 
四、這種模式也可讓你將獨立的功能封裝在自包含模塊中。
 
五、能夠將這些代碼封裝進一個當即執行函數中,而且確保頁面沒有它的狀況下也能正常工做。
六、能夠添加更多的增強模塊,移除它們,單獨測試它們,容許用戶去禁用它們等等。
 
 
 
 
5、注意點

當即執行函數一般做爲一個單獨模塊使用。通常沒有問題,可是,建議在本身寫的當即執行函數前加分號,這樣能夠有效地與前面代碼進行隔離。不然,可能出現意想不到的錯誤。

例如

 
         var c = 12
        var d = c
      (function () { var e = 14; }())

會報這樣一個錯誤:

相關文章
相關標籤/搜索