📜  IIFE(立即可调用函数表达式)- Javascript (1)

📅  最后修改于: 2023-12-03 14:42:04.274000             🧑  作者: Mango

IIFE(立即可调用函数表达式) - Javascript

IIFE(Immediately Invoked Function Expression,立即调用函数表达式),是一种可以立即调用的匿名函数。

为什么使用IIFE?

使用IIFE可以防止变量污染,保证变量的作用域只在该函数内部有效,避免出现全局变量和难以维护的代码。此外,IIFE还可以将一段代码封装成一个模块,便于管理和组织代码。

IIFE的基本语法
(function() {
  // 匿名函数体
})();

或者

(function() {
  // 匿名函数体
}());

以上两种写法可以产生相同的效果,都是定义一个匿名函数并立即调用它。

IIFE的高级用法

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是一个值得考虑的方案。