IIFE在闭包中起什么作用,现代语法如何替代

IIFE 在闭包中的角色是一次性匿名函数壳子,用来制造私有词法环境;其模块封装与作用域隔离职能已被 ESM、let/const 块作用域、#私有字段和顶层 await 接管。

要点

  1. 模块模式用 IIFE 立刻执行锁住私有状态,现由 ESM 文件级作用域或类 #私有字段替代。
  2. var 循环共用变量需 IIFE 传参锁住当次值,现由 for 循环头的 let 每次迭代新建词法环境替代。
  3. 隔离临时变量原靠 IIFE,现用裸块级作用域加 let/const 即可,内部函数同样形成闭包。
  4. 顶层异步初始化原写 async IIFE,现在 ES Module 中可直接用顶层 await。
  5. 类静态属性复杂初始化可用 static {} 块替代外层 IIFE。
  6. 当前 IIFE 仍见于 JSX 模板内联复杂计算,以及不支持顶层 await 的非模块脚本。

来源