ECMAScript 2021,也被称为 ES12,是最新的 JavaScript 规范版本,提供了一些新的语言特性和功能。其中两个非常有趣的新功能是 GlobalThis 和自执行 async function。
GlobalThis
JavaScript 中的全局对象在不同的平台和环境中有不同的命名。比如在浏览器中,全局对象是 window
,而在 Node.js 中,全局对象是 global
。这造成了一些跨平台和跨环境的问题,并且需要开发者编写一些特定的代码来解决这些问题。
GlobalThis 旨在解决这些问题。它提供了一种标准的方式来访问全局对象,无论在哪个平台和环境中运行。只需要使用 globalThis
关键字即可:
console.log(globalThis);
这段代码在浏览器和 Node.js 中都能运行,并返回全局对象。这使得在不同平台和环境中的开发变得更加容易和一致。
需要注意的是,GlobalThis 在 ES12 中是一个语言特性,而不是一个全局对象。因此,在早期的 JavaScript 版本中无法使用它。但是,可以通过以下方式实现类似的功能:
(function() { var global = (typeof window !== 'undefined' ? window : global); console.log(global); })();
这个自执行函数通过检查当前环境来获取全局对象,并在所有环境中工作。
自执行 async function
ES6 引入了异步函数,也称为 async function。它们提供了一种方便的方式来处理异步操作。在以前,通常需要使用回调函数或 Promise 对象来实现异步操作。
在 ES12 中,我们可以写出自执行的异步函数。也就是,不需要通过调用函数来执行它。这可以通过立即在 async function 前面加上圆括号来实现:
(async function() { console.log(await Promise.resolve(42)); })();
这个代码片段会立即运行,然后等待 Promise 对象完成并输出 42。这可以用于编写一些简洁和优雅的异步代码。
需要注意的是,自执行 async function 与自执行函数稍微有些不同。自执行函数返回函数本身,而自执行 async function 返回 Promise 对象。因此,在自执行 async function 中使用 await 关键字是非常有效的。
结论
GlobalThis 和自执行 async function 是 ES12 中的两个新功能,它们为开发者提供了更加方便和一致的方式来访问全局对象并处理异步操作。我们应该在实际的项目中更多地尝试使用它们,并加深对它们的理解和使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672c4bb2ddd3a70eb6d73b36