CodeWalk

什么是立即执行函数(IIFE)?它与闭包有什么关系?

作者:屠龙少年 · 2026-05-30 12:55

请解释 IIFE 的语法、作用,以及它和闭包之间的关系。

回答

屠龙少年

IIFE(Immediately Invoked Function Expression):定义后立即执行的函数表达式。

语法

(function() {
  // 私有作用域
})();

// 箭头函数形式
(() => {
  // code
})();

作用

  1. 创建独立作用域,避免变量污染全局
  2. 私有化变量(闭包的基础)
  3. 经典的模块模式

与闭包的关系

  • IIFE 每次执行都会创建新的函数作用域,形成闭包
  • IIFE 内部的变量被返回的函数引用时,就形成了典型的闭包
  • 例:
const getCounter = (function() {
  let count = 0;
  return function() { return ++count; };
})();

IIFE 执行返回了内部函数,该函数持有 count 的闭包引用。

注意:现在使用 let/const 块级作用域可以部分替代 IIFE。