📅  最后修改于: 2023-12-03 14:42:04.274000             🧑  作者: Mango
IIFE(Immediately Invoked Function Expression,立即调用函数表达式),是一种可以立即调用的匿名函数。
使用IIFE可以防止变量污染,保证变量的作用域只在该函数内部有效,避免出现全局变量和难以维护的代码。此外,IIFE还可以将一段代码封装成一个模块,便于管理和组织代码。
(function() {
// 匿名函数体
})();
或者
(function() {
// 匿名函数体
}());
以上两种写法可以产生相同的效果,都是定义一个匿名函数并立即调用它。
IIFE不仅仅是一个简单的函数调用,还可以接收参数,返回值,实现模块化开发等。
(function(name) {
console.log("Hello, " + name + "!");
})("world");
在以上例子中,我们传递了一个参数"world"
给IIFE内部的匿名函数,因此我们会在控制台上看到输出"Hello, world!"
。
let result = (function() {
let name = "world";
return "Hello, " + name + "!";
})();
console.log(result);
在以上例子中,我们定义了一个变量result
来接收匿名函数的返回值,这个返回值会被赋值给result
变量。然后我们在控制台上打印出result
变量的值"Hello, world!"
。这个例子展示了如何用IIFE封装一段有返回值的代码。
IIFE还可用于实现模块化开发,将一段代码封装成一个模块,使得代码更加可维护,且不容易发生变量污染。
let MyModule = (function() {
let name = "world";
function greet() {
console.log("Hello, " + name + "!");
}
return {
greet
};
})();
MyModule.greet(); // "Hello, world!"
在以上例子中,我们把name
定义为私有变量,外部无法直接访问。我们暴露一个公有方法greet()
供外部调用,这个公有方法可以访问name
这个私有变量。这样就能保证name
变量只在MyModule
这个模块内部有效了,外部代码就不会意外污染这个变量了。
IIFE是一种灵活实用的匿名函数,可以用于模块化开发、变量隔离、防止变量污染等场景。它的语法相对简单,但是可以运用得非常巧妙。当你遇到需要一次性执行并且不希望将变量泄漏到全局作用域时,IIFE是一个值得考虑的方案。