Skip to content

0x00c-IIFE表达式用处小结

IIFE(Immediately Invoked Function Expression)是指立即调用的函数表达式,它可以被用来创建一个独立的作用域,将代码模块化,并保护代码中的变量不受外部影响。

一般来说,有如下几种用处:

  • 创建仅仅执行一次的函数,并且执行
  • 避免污染全局命名空间
  • 隔离代码,外部访问不到

示例

我们的程序可能包括很多来自不同源文件的函数和全局变量,因此限制全局变量的数量非常重要:

js
(() => {
  // 初始化代码
  let firstVariable;
  let secondVariable;
})();

// firstVariable 和 secondVariable 变量在函数执行后会被丢弃
(() => {
  // 初始化代码
  let firstVariable;
  let secondVariable;
})();

// firstVariable 和 secondVariable 变量在函数执行后会被丢弃

async 立即调用函数表达式允许你在比较旧的浏览器中或者 JavaScript 运行环境没有顶层 await 时使用 await 和 for-await:

js
const getFileStream = async (url) => {
  // 具体实现
};
(async () => {
  const stream = await getFileStream("https://domain.name/path/file.ext");
  for await (const chunk of stream) {
    console.log({ chunk });
  }
})();
const getFileStream = async (url) => {
  // 具体实现
};
(async () => {
  const stream = await getFileStream("https://domain.name/path/file.ext");
  for await (const chunk of stream) {
    console.log({ chunk });
  }
})();