IIFE(Immediately Invoked Function Expression)即立即调用函数表达式,在JavaScript中是一种常见的设计模式。IIFE可以在定义后立即执行,它有自己的作用域,不会污染全局命名空间,可以保护变量不受外部环境的影响。
IIFE的基本语法如下:
(function () {
// 函数体
})();
下面是IIFE的详细解析和案例。
- 定义IIFE
(function () {
// 函数体
})();
在这个例子中,我们定义了一个匿名函数,并立即执行它。注意,函数的最后有一对小括号()
,这是调用函数的语法。
- 传递参数
(function (message) {
console.log(message);
})('Hello, World!');
在这个例子中,我们向IIFE传递了一个参数'Hello, World!'
。IIFE内部可以接收这个参数,并在函数体中使用。
- 保护变量作用域
(function () {
var counter = 0;
function increment() {
counter++;
console.log(counter);
}
increment();
increment();
})();
在这个例子中,我们使用IIFE来保护变量counter
的作用域,使其不受外部环境的影响。在函数体中,我们定义了一个内部函数increment()
,每次调用这个函数,都会增加counter
的值并打印出来。
- 返回值
var result = (function () {
return 'Hello, World!';
})();
console.log(result); // 输出 'Hello, World!'
在这个例子中,我们使用IIFE来返回一个值。在IIFE的函数体中,我们使用return
语句返回了一个字符串'Hello, World!'
,并将其赋值给了变量result
。
总结: IIFE是JavaScript中常用的设计模式,它可以在定义后立即执行函数,并且拥有自己的作用域,可以保护变量不受外部环境的影响。IIFE可以用于传递参数、保护变量作用域和返回值等场景。