Google Apps Scrip V8运行时使用哪个版本的ECMAScript?
当您创建一个新的Google Apps脚本时,它似乎默认支持V8运行时。documentation状态:
Apps脚本支持两个JavaScript运行时:现代的V8运行时和由Mozilla的Rhino JavaScript解释器支持的旧运行时。
V8运行时支持现代ECMAScript语法和功能。
V8 runtime documentation状态:
在这两种情况下,他们都非常含糊地说明支持哪个ECMAScript版本,只是简单地声明了现代ECMASIPT语法。这是有问题的,因为有7 versions that were released between 2015 and 2021。因此,摩登&可以引用这些版本中的任何一个。您可以在由V8运行时支持的脚本中使用现代ECMAScript语法。此语法包括let、const和许多其他流行功能。
例如,我可以很容易地假设&现代&引用最新的ECMAScript第12版(2022),并最终编写如下代码:
let a = 1_000;
但是,尝试使用该语法会导致错误:
语法错误:ParseError:意外令牌非法行:...
在找到受支持的最新版本之前,不必手动逐一查看其余6个版本,最好能找到明确说明受支持的ECMAScript版本的文档。
注意:前面的相关问题(Which Edition of ECMA-262 Does Google Apps Script Support?)没有什么用处,因为这些答案还参考了现代ECMAScript&,而不是明确的特定版本。
V8运行时支持哪个版本的ECMAScript?
解决方案
这里有一些细微差别:
是一个相当新的版本,而且经常更新。我相信这个想法是为了跟踪或稍微落后于稳定的Chrome版本,但(就像任何更新其依赖项的大型项目一样)可能偶尔会出现问题/延迟。现在它应该在9.x版本范围内的某个地方。(对于未来的读者:我预计这一声明在2022年结束之前就会过时!)Google Apps脚本使用哪个版本的V8?
Google Apps脚本V8运行时支持哪个版本的ECMAScript?
我想,如果这个问题有一个简单的答案,您可以在文档中找到。正如@Kaiido在评论中所说,JavaScript引擎逐一实现新的JavaScript功能(而不是ECMAScript版本)。因此,对于浏览器而言,就像在GAS这样的环境中一样,询问功能X是否受支持通常更有意义,因为很可能仍缺少某些ES2020功能,但某些ES2021功能已经可用。
好的,GAS使用的V8版本足够新(至少两年)来支持它;但是整体的GAS体验不仅取决于V8:编辑器正在解析输入的源代码,以便提供帮助、突出显示、错误检查或诸如此类的东西。看起来GAS团队意识到某些功能尚未得到负责的组件的支持,并正在积极努力解决这一问题。(我不知道时间表是什么。)为什么
let a = 1_000;
会产生语法错误?
相关文章