iife是immediately invoked function expression的缩写,即立即调用的函数表达式,它通过将匿名函数定义为表达式并立即执行,创建独立作用域以避免全局污染;标准写法为(function(){})(),本质是让javascript引擎将其识别为表达式而非函数声明。

JavaScript 中匿名函数通过立即执行函数表达式(IIFE)来创建独立作用域,避免变量污染全局环境。
什么是 IIFE?
IIFE 是 Immediately Invoked Function Expression 的缩写,即“立即调用的函数表达式”。它把匿名函数定义和调用合在一起,执行完就销毁,自然形成封闭作用域。
- 必须是函数表达式,不是函数声明(否则会语法错误)
- 常见写法是在函数外加一层括号,再加一对括号调用
- 本质是让 JS 引擎识别为表达式,而非声明
标准写法与常见变体
最常用的是包裹在圆括号中:
(function() { console.log('hello'); })();
其他合法写法也基于“强制表达式”的原理:
- !function() { /* code */ }(); —— 用逻辑非运算符
- +function() { /* code */ }(); —— 用一元加号
- ~function() { /* code */ }(); —— 用按位取反
- void function() { /* code */ }(); —— 用 void 运算符(返回 undefined)
推荐使用第一种,语义清晰、可读性强。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
传参与返回值
IIFE 可接收外部变量作为参数,内部也可返回值供后续使用:
(function(name, age) {
console.log(`我是${name},${age}岁`);
})('张三', 25);
也可以返回一个对象或函数,实现模块化封装:
const counter = (function() {
let count = 0;
return {
add: () => ++count,
get: () => count
};
})();
console.log(counter.add()); // 1
ES6 后的替代方案
现代开发中,更推荐用块级作用域(let/const)或模块(import/export)替代 IIFE:
- 用 { let x = 1; console.log(x); } 创建临时块作用域
- 用 export 和 import 拆分逻辑、隔离变量
- IIFE 主要用于兼容老环境或特定场景(如循环中绑定索引)
不过理解 IIFE 对掌握作用域机制仍有重要意义。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










