前言
立即執行函數有以下作用
- 建立一個獨立作用域,這個作用域裡面的變量,外部通路不到,避免變量污染。
- 閉包和私有資料
使用文法
有兩種寫法
// 第一種:用括号把整個函數定義和括号調用包裹起來
(function(){
// 函數體
}())
// 第二種:用括号把函數定義包裹起來,後面再加括号調用
(function (){
// 函數體
})()
一般用第二種會多一些
(function (){
// 函數體
})()
示例
使用示例1.匿名函數直接執行
// 匿名函數
(function (){
let x = 'hello'
let y = 'world'
console.log(x+y)
})()
使用示例2.實作閉包的作用
const m = (function(){
let x = 'hello';
let y = 'world'
return function() {
return x+y
}
})()
console.log(m());
子產品化
使用立即執行函數,可以不暴露私有成員
var m = (function() {
var num = 0;
var f1 = function() {
return num
}
var f2 = function() {
return num + 1
}
return {
f1: f1,
f2: f2
}
})()
console.log(m.f1())