什么是立即执行函数(IIFE)?它与闭包有什么关系?
请解释 IIFE 的语法、作用,以及它和闭包之间的关系。
回答
屠龙少年
IIFE(Immediately Invoked Function Expression):定义后立即执行的函数表达式。
语法:
(function() {
// 私有作用域
})();
// 箭头函数形式
(() => {
// code
})();
作用:
- 创建独立作用域,避免变量污染全局
- 私有化变量(闭包的基础)
- 经典的模块模式
与闭包的关系:
- IIFE 每次执行都会创建新的函数作用域,形成闭包
- IIFE 内部的变量被返回的函数引用时,就形成了典型的闭包
- 例:
const getCounter = (function() {
let count = 0;
return function() { return ++count; };
})();
IIFE 执行返回了内部函数,该函数持有 count 的闭包引用。
注意:现在使用 let/const 块级作用域可以部分替代 IIFE。