首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google脚本ECMAScript运行时使用哪个版本的V8?

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

Stack Overflow用户
提问于 2022-02-12 04:48:25
回答 2查看 594关注 0票数 3

当您缓存一个新的Google脚本时,默认情况下它似乎支持v8运行时。文档指出:

应用程序脚本支持两个JavaScript运行时:现代的V8运行时和由Mozilla的Rhino JavaScript解释器驱动的旧运行时。 V8运行时支持现代的ECMAScript语法和特性。

V8运行时文档指出:

您可以在由ECMAScript运行时驱动的脚本中使用现代的V8语法。这个语法包括let、const和许多其他流行特性。

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

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

代码语言:javascript
复制
let a = 1_000;

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

语法错误: ParseError:意外令牌非法行:.

与其手动遍历其余6个版本中的每个版本,直到找到支持的最新版本,不如找到明确声明支持哪个ECMAScript版本的文档。

注意:前一个相关的问题(Google脚本支持哪个版本的ECMA-262?)是没有帮助的,因为这些答案也提到了“现代ECMAScript”,而不是一个明确的、具体的版本。

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

EN

回答 2

Stack Overflow用户

发布于 2022-02-12 18:30:48

这里有一些细微之处:

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

一个合理的最新版本,它经常被更新。我相信这个想法是跟踪或稍微落后于稳定的Chrome版本,但是(就像任何大型项目更新它的依赖项一样)可能偶尔会出现问题/延迟。现在它应该在9.x版本范围的某个地方。(对于未来读者:我希望这句话在2022年结束之前就过时了!)

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

我想如果有一个简单的答案,你会发现在文档中。正如@Kaiido在评论中所说,JavaScript引擎一个接一个地实现新的JavaScript特性(而不是EcmaScript版本)。因此,对于像GAS这样的环境一样的浏览器来说,问“features支持吗?”通常更有意义,因为很可能有些(比方说) ES2020特性仍然缺失,但一些ES2021功能已经可用。

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

好吧,GAS使用的V8版本足够新(至少两年)来支持它;但是总的GAS体验依赖于V8以外的更多:编辑器正在解析输入的源代码,以提供帮助或突出显示或错误检查等等。看起来燃气团队已经意识到某些特性还没有被负责的组件所支持,并且正在积极地致力于解决这个问题。(我不知道时间线是什么。)

票数 4
EN

Stack Overflow用户

发布于 2022-02-12 19:52:44

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

仅仅是为了扩展关于解析器不支持的新特性的@jmrk的回答

代码语言:javascript
复制
function test2564(){
  //let a = 1_000; throws syntax error by the parser
  console.info(eval(`1_000`));// correctly logs 1000
}

底层的V8引擎很好,并且支持最新的特性,但是解析器不允许您使用这些特性保存或执行项目,因为它认为它们是语法错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71089066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档