立即執行函式

wade3po發表於2019-01-25

立即執行函式(IIFE),也叫做自執行函式,就是不需要呼叫就立馬執行的函式。

在解釋立即函式的時候,我們先了解一下三個函式相關的知識:

函式宣告:

function fun() {

} 函式表示式: var fun = function () {

} 匿名函式: function() {

}

立即函式有兩種常見格式:

(function() { console.log(999) }())

(function() { console.log(999) })()

這兩種格式都能保證函式立馬執行,這也是立即函式的基礎常見的格式,()運算子加上匿名函式,還有另外幾種格式也能立即執行:

!function() { console.log(999) }()

+function() { console.log(999) }()

-function() { console.log(999) }()

=function() { console.log(999) }()

Var fun = function() { console.log(999) }()

運算子!、+、-、=和函式表示式都能打到立即執行。上面的方法,是匿名函式加上運算子,其實把匿名函式都換成函式宣告也是一樣的,也能變成立即執行函式:

!function fun() { console.log(999) }()

那麼我們為什麼要使用立即函式呢?我們都知道JavaScript沒有塊級作用域,只要函式作用域,立即函式最大的用途就是建立一個函式作用域,也就是建立一個私有的空間。

我們都知道jQuery就是一個匿名函式,看原始碼可以看見jQuery所有內容都包含在匿名函式裡面

( function( global, factory ) {

}

建立一個函式作用域是所有JS外掛必須要有的功能,以確保各JS外掛建立的變數不能和其他JS外掛的變數還有引入使用程式的變數發生衝突。

歡迎關注Coding個人筆記 公眾號

相關文章