. 理解
- 全稱: Immediately-Invoked Function Expression
. 作用
- 隱藏實現(xiàn)
- 不用命名函數(shù)治唤,避免了污染全局變量
- 用它來編碼js模塊
- IIFE內部形成了單獨作用域澳化,可以封裝一些外部無法讀取的私有變量
有時候我們需要在定義函數(shù)后立即調用改函數(shù)滔迈,這時候不能再定義后面加上圓括號,會報錯的诉植。
(function (){.......}())// 報錯
(function (){......})() //報錯
- 上面兩種方式以圓括號開頭信姓,JavaScript引擎會認為是一個表達式,不是定義語句粉臊。這就叫立即調用的函數(shù)表達式。在表達式的后邊必須加上分號
(function (){......})() ; 正確
- 只要是表達式的寫法都是對的驶兜,寫法多種
(function () { //匿名函數(shù)自調用
var a = 3
console.log(a + 3)
})();
(function () {
var a = 1
function test () {
console.log(++a)
}
window.$ = function () { // 向外暴露一個全局函數(shù)
return {
test: test
}
}
})()
$().test() // 1. $是一個函數(shù) 2. $執(zhí)行后返回的是一個對象