當即執行函數(IIFE),也叫作自執行函數,就是不須要調用就立馬執行的函數。函數
在解釋當即函數的時候,咱們先了解一下三個函數相關的知識:插件
函數聲明:ip
function fun() {作用域
} 函數表達式: var fun = function () {源碼
} 匿名函數: function() {io
}console
當即函數有兩種常見格式: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我的筆記 公衆號