Google Apps 脚本 V8 运行时使用哪个版本的 ECMAScript?

2023-12-02

当您创建新的 Google Apps 脚本时,它似乎默认支持 v8 运行时。这文档 states:

Apps 脚本支持两种 JavaScript 运行时:现代的 V8 运行时和由 Mozilla 的 Rhino JavaScript 解释器提供支持的较旧的运行时。

V8 运行时支持现代 ECMAScript 语法和功能。

The V8 运行时文档 states:

您可以在由 V8 运行时支持的脚本中使用现代 ECMAScript 语法。此语法包括 let、const 和许多其他流行的功能。

在这两种情况下,他们对于支持哪个 ECMAScript 版本都非常模糊,只是简单地说明了“现代 ECMAScript 语法”。这是有问题的,因为有2015年至2021年间发布的7个版本。因此,“现代”可以指这些版本中的任何一种。

例如,我可以很容易地假设“现代”指的是 ECMAScript 的最新第 12 版(2022 年),并最终编写如下代码:

let a = 1_000;

但是,尝试使用该语法会导致错误:

语法错误:ParseError:意外的标记非法行:...

与其手动检查其余 6 个版本直到找到受支持的最新版本,不如找到明确说明支持哪个 ECMAScript 版本的文档。

注:之前的相关问题(Google Apps 脚本支持哪个版本的 ECMA-262?)没有帮助,因为这些答案也指的是“现代 ECMAScript”而不是明确的、特定的版本。

V8 运行时支持哪个版本的 ECMAScript?


这里有一些细微差别:

Google Apps 脚本使用哪个版本的 V8?

一个相当新的版本,并且经常更新。我相信这个想法是跟踪或稍微落后于稳定的 Chrome 版本,但是(与更新其依赖项的任何大型项目一样)偶尔可能会出现问题/延迟。现在它应该在 9.x 版本范围内。 (对于未来的读者:我预计这个说法在 2022 年结束之前就会过时!)

Google Apps 脚本 V8 运行时支持哪个版本的 ECMAScript?

我想如果有一个简单的答案,您可以在文档中找到。正如 @Kaiido 在评论中所说,JavaScript 引擎实现了新的 JavaScriptfeatures一对一(而不是 EcmaScriptversions)。因此,对于像 GAS 这样的环境的浏览器来说,询问“功能 X 支持吗?”通常更有意义,因为很可能某些 ES2020 功能仍然缺失,但某些 ES2021 功能已经可用。

为什么let a = 1_000;产生语法错误?

好吧,GAS 使用的 V8 版本足够新(至少两年)来支持它;但整体 GAS 体验不仅仅取决于 V8:编辑器正在解析输入的源代码,以提供帮助、突出显示或错误检查等。看起来 GAS 团队意识到负责该问题的组件尚不支持某些功能,并且正在积极努力解决这个问题。 (我不知道时间表是什么。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Apps 脚本 V8 运行时使用哪个版本的 ECMAScript? 的相关文章

随机推荐