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 });
}
})();