立即执行函数表达式 (IIFE) 的常见写法

IIFE 的几种常见写法

1. 带名字的 IIFE

(function autoRun() {
  console.log("执行了");
})();

名字在函数体内可见,方便调试,但外面无法调用。


2. 匿名函数 IIFE(最常见)

(function() {
  console.log("执行了");
})();

3. 箭头函数 IIFE

(() => {
  console.log("执行了");
})();

可以用参数:

((msg) => {
  console.log("Hello", msg);
})("World");

4. 一元运算符触发 IIFE

只要能把 function(){} 变成「表达式」,都可以。比如:

!function() {
  console.log("执行了");
}();

+function() {
  console.log("执行了");
}();

这类写法早期为了压缩代码常见,现在不推荐。


5. async IIFE(常用于顶层 await 替代)

(async () => {
  const data = await fetch('/api/data').then(r => r.json());
  console.log(data);
})();

🔹 其他“定义即执行”的类似模式

除了 IIFE,JS 里还有一些“定义完就执行”的写法,思路类似:

6. 对象立即调用方法

({
  run() {
    console.log("执行了");
  }
}).run();

7. 类的立即实例化

new class {
  constructor() {
    console.log("执行了");
  }
};

8. 立即调用箭头函数返回的值

const result = (() => 42)();
console.log(result); // 42

✅ 总结:

IIFE 本质就是「函数表达式 + ()」。

常见形式:普通函数、带名字函数、箭头函数、async 函数。

变体:利用 !+new 等运算符把函数转成表达式。

Scroll to Top