请写出几种匿名自执行的写法(至少三种)

99 阅读2分钟

匿名自执行函数的几种写法

在 JavaScript 中,匿名自执行函数(Immediately Invoked Function Expression,IIFE)是一种常用的设计模式。它可以创建一个新的作用域,避免变量污染全局作用域。以下是几种实现匿名自执行函数的方式。

1. 使用括号包裹函数

最常见的方式是将函数包裹在括号中,然后立即调用它:

(function() {
  console.log("这是第一种匿名自执行函数");
})();

解释:

  • function() {...} 定义了一个匿名函数。
  • 括号 () 将函数表达式包裹起来。
  • 最后通过 () 立即调用该函数。

2. 使用箭头函数

在 ES6 中,箭头函数也可以作为匿名自执行函数使用:

(() => {
  console.log("这是第二种匿名自执行函数");
})();

解释:

  • () => {...} 定义了一个匿名箭头函数。
  • 同样用括号包裹并立即调用。

3. 使用函数表达式

可以将函数赋值给一个变量,然后立即调用该变量:

var myFunction = function() {
  console.log("这是第三种匿名自执行函数");
}();

解释:

  • var myFunction = function() {...} 定义了一个匿名函数并赋值给变量。
  • 通过 () 立即调用该函数。

4. 使用 async 函数

在现代 JavaScript 中,我们也可以使用 async 函数的方式进行自执行:

(async () => {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  console.log(data);
})();

解释:

  • async () => {...} 定义了一个异步匿名函数。
  • 使用 await 关键字来处理异步操作。

5. 使用立即调用的函数表达式(IIFE)

这种方式与第一种类似,但更明确地表达了这是一个 IIFE:

!function() {
  console.log("这是第五种匿名自执行函数");
}();

解释:

  • 使用 ! 符号来强制将函数作为表达式执行。
  • 这是一种常见的技巧,用于防止与其他变量冲突。

6. 使用 + 符号

同样可以使用 + 符号作为前缀:

+function() {
  console.log("这是第六种匿名自执行函数");
}();

解释:

  • + 符号确保函数被解析为一个表达式。

总结

通过以上几种方式,我们可以灵活地创建匿名自执行函数,利用它们的作用域特性来避免全局变量污染。在实际开发中,可以根据需求选择合适的方式来使用 IIFE。