JavaScript 中的立即调用函数表达式(IIFE)

发布于 2022-07-11 12:40:49 字数 2045 浏览 948 评论 0

立即调用函数表达式 (简称 IIFE)是一种 JavaScript 设计模式,它声明一个匿名函数并立即执行它。

// Prints "Hello, World!"
(function() {
  console.log('Hello, World!');
})();

您还可以在 IIFE 模式中使用箭头函数:

// Prints "Hello, World!"
(() => {
  console.log('Hello, World!');
})();

周围的括号 function() { ... }是强制性的:没有这些括号,你会得到一个语法错误。 这是因为括号告诉 JavaScript 语言解析器将函数定义视为一个 表达式

为什么是 IIFE?

IIFE 很有用,因为它们可以定义在 IIFE 之外无法访问的局部变量。 例如,IIFE 通常用于在浏览器中执行 JavaScript,而不会污染全局范围。

<script>
  // Execute some code immediately without defining `answer` as a
  // global variable.
  (function() {
    var answer = 42;
  })();

  typeof answer; // 'undefined'
</script>

如果您希望某个计算的一些临时变量不想暴露给其他计算,您也可能会看到 IIFE。 例如,假设您想计算购物车的总成本,但不希望 salesTax 泄漏到周围范围的变量:

const subtotal = 40;
const total = (function() {
  const salesTax = product.salesTaxRate * subtotal;
  return subtotal + salesTax;
})();

使用一元运算符

如果将 IIFE 与一元运算符一起使用,则可以省略 IIFE 周围的括号,例如 void operator

// Prints 'Hello, World'
void function() { console.log('Hello, World'); }();

你不太可能看到 void 很有用, 异步函数 因为 await 是一元运算符。 这样你就可以 await 在异步 IIFE 上:

const answer = await async function() {
  return 42;
}();
answer; // 42

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

彡翼

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

留蓝

文章 0 评论 0

18790681156

文章 0 评论 0

zach7772

文章 0 评论 0

Wini

文章 0 评论 0

ayeshaaroy

文章 0 评论 0

初雪

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文