立即调用函数表达式

立即调用函数表达式(IIFE)是一种 JavaScript 函数在定义后就会立即执行的习惯用法。它也被称为自执行匿名函数。IIFE 这个名字是由 Ben Alman 在他的博客中提出的。

js
// 标准 IIFE
(function () {
  // 语句……
})();

// 箭头函数变体
(() => {
  // 语句……
})();

// 异步 IIFE
(async () => {
  // 语句……
})();

其主要包含两部分:

  1. 函数表达式。其通常需要用括号括起来才能被正确解析。
  2. 立即调用函数表达式。可以提供参数,但不带参数的 IIFE 更为常见。

IIFE 是一种用于在需要单个表达式的位置执行其自身作用域内的任意多条语句(并可能返回一个值)的常见模式。其类似于逗号运算符,但功能更加强大,后者只能执行多个表达式,因而不提供使用局部变量或控制流语句的方法。

IIFE 的用例包括:

  • 通过创建新的作用域来避免污染全局命名空间。
  • 创建新的异步上下文以在非异步上下文中使用 await
  • 使用复杂的逻辑计算值,例如将多个语句用作单个表达式。

有关代码示例,请参见 function 表达式async function 表达式参考页。

参见