立即执行函数表达式(IIFE)
理解 IIFE 的语法、用法和应用场景
问题
什么是立即执行函数表达式(IIFE),如何使用?
解答
立即执行函数表达式(IIFE)是一种在定义后立即执行的函数模式。本质上是函数表达式在创建后立即调用。
两种标准写法
写法一:函数包裹在括号中,后跟调用括号
(function() {
// 函数体
})();
写法二:函数和调用括号一起包裹
(function() {
// 函数体
}());
使用运算符的写法
除了括号,!、+、-、= 等运算符也能将函数声明转换为函数表达式,从而实现立即执行:
// 使用 () 运算符
(function(test) {
console.log(test); // 输出 123
})(123);
// 使用 ! 运算符
!function(test) {
console.log(test); // 输出 123
}(123);
// 使用 + 运算符
+function(test) {
console.log(test); // 输出 123
}(123);
应用场景
IIFE 主要用于创建独立作用域,封装私有变量:
const counter = (function() {
let count = 0; // 私有变量
return {
increment: function() {
count++;
return count;
},
getCount: function() {
return count;
}
};
})();
console.log(counter.increment()); // 1
console.log(counter.getCount()); // 1
关键点
- 函数体必须是函数表达式,不能是函数声明
- 函数体后必须有调用括号
() - 创建独立作用域,避免污染全局变量
- 可以封装私有变量,外部无法直接访问
- 常用于模块化开发和变量隔离
目录