IIFE 是 “Immediately Invoked Function Expression” 的缩写,即“立即调用函数表达式”。它是一种在 JavaScript 中常用的设计模式,主要用于创建一个新的作用域来避免变量污染全局作用域。
IIFE 的基本形式
一个典型的 IIFE 结构如下:
(function() {
// 这里是代码块
var x = 10;
console.log(x); // 输出 10
})();
或者使用箭头函数的形式:
(() => {
// 这里是代码块
var x = 10;
console.log(x); // 输出 10
})();
工作原理
- 函数表达式:IIFE 是一个函数表达式,而不是函数声明。函数表达式可以立即执行。
- 立即调用:在定义函数后立即调用它。通常通过在函数表达式外部加上括号
()
来实现立即调用。 - 作用域隔离:IIFE 创建了一个独立的作用域,函数内部定义的变量不会污染外部的全局作用域。这对于避免变量名冲突特别有用。
使用场景
- 避免全局变量污染:在大型应用程序中,使用 IIFE 可以避免命名冲突。
- 模块化开发:在模块化开发中,IIFE 可以用来封装模块,确保模块内部的变量和函数不泄露到全局作用域。
- 立即执行逻辑:需要在脚本加载时立即执行某些逻辑,而不需要在全局作用域中保留这些逻辑的函数。
IIFE 是一种非常实用的 JavaScript 编程技巧,尽管在现代 JavaScript 中,随着模块系统(如 ES6 模块)的引入,它的使用频率有所降低,但在某些场景中仍然非常有用。