IIFE是定义后立即执行的函数表达式,用于创建私有作用域、防止全局污染、解决循环闭包问题、模拟模块化及执行一次性初始化逻辑。
立即执行函数(IIFE,Immediately Invoked Function Expression)是定义后立刻运行的函数表达式,核心作用是创建一个独立、私有的作用域,让内部变量和逻辑不泄露到外部,尤其在 ES6 之前缺乏块级作用域(let/const)时非常关键。
用 var 声明的变量若直接写在全局脚本中,会挂到 window(浏览器)或全局对象上,容易重名冲突。IIFE 把初始化代码包进去,变量只在函数内有效:
标签共用一个全局空间,IIFE 是天然的“隔离墙”在 for (var i = 0; i 中绑定事件或延时执行时,回调里访问的 i 往往全是 3 —— 因为 var 是函数作用域,所有迭代共享同一个 i。IIFE 可为每次循环生成独立作用域:
(function(i) { setTimeout(() => console.log(i), 100); })(i);let,但 IIFE 在兼容旧环境时仍是可靠解法在没有 import/export 的时代,IIFE 是实现“模块”的主流方式:
increment、getCount),内部状态 count 不可直接访问有些代码只需页面加载时跑一次,后续不再需要,也不该留下全局痕迹:
简洁:(function() { /* 初始化 */ })(); 或 (() => { /* 初始化 */ })();(箭头函数需注意 this)