历史小剧场
”我希望认您作父亲,但又怕您觉得我年纪大,不愿意,索性让我的儿子给您作孙子吧!“ ----《明朝那些事儿》
什么是立即执行函数?
特点:
- 声明一个匿名函数
- 马上调用这个匿名函数
- 销毁这个匿名函数
(function () {
console.log("I'm a closure!")
})()
等同于
function fn() {
console.log("I'm a function!")
}
fn()
立即执行函数作用
- 简化代码,不用先封装再调用,不用起函数名
- 有函数作用域,可以隔离变量
和闭包结合
- 立即执行函数的执行会立即执行函数体,而函数体中包含的闭包会在立即执行函数执行完毕后执行
- 立即函数可以让闭包的实现少写一些代码
// 不用立即函数
function sayName() {
const name = 'Tom'
return function() {
console.log(name)
}
}
const say = sayName()
say() // output: Tom
// 用立即函数
const sayIIFE = (function() {
const name = 'Tom'
return function() {
console.log(name)
}
})()
sayIIFE() // output: Tom
用不用立即执行函数,都可以实现闭包,把变量 name 藏起来,全局访问不到