什么是 IIFE(立即执行函数)?有什么用途?
IIFE(Immediately Invoked Function Expression)是在定义后立即执行的函数表达式。
语法
// 常见写法
;(function () {
console.log('executed immediately')
})()
// 箭头函数
;(() => {
console.log('also works')
})()
// 带参数
;(function (name) {
console.log('Hello, ' + name)
})('World')用途
- 创建独立作用域(避免污染全局)
- 模块模式(ES6 前的模块化方案)
- 闭包陷阱(循环中保存变量值)
// 模块模式
const Counter = (function () {
let count = 0 // 私有变量
return {
increment() { return ++count },
getCount() { return count }
}
})()
// 解决循环闭包问题
for (var i = 0; i < 3; i++) {
(function (j) {
setTimeout(() => console.log(j), 0)
})(i)
}
// 输出 0, 1, 2现代开发中
ES6 的 let / const 和模块系统(import / export)已基本取代 IIFE 的用途,但在一些库的打包产物中仍常见。