v8何时实现ECMAScript 5

When will v8 implement ECMAScript 5?

本文关键字:ECMAScript 实现 何时 v8      更新时间:2023-09-26

我注意到v8在ECMAScript第5版的问题上相当静音。

V8按照ECMA-262第3版中的规定实现ECMAScript,并在使用IA-32或ARM处理器的Windows XP和Vista、Mac OS X 10.5(Leopard)以及Linux系统上运行。

即使是bug追踪器似乎也很安静。。。

  • ECMA 5
  • Javascript 1.8

在一个bug上,你可以找到一个commiter写着:

V8是ECMAScript的实现,而不是JavaScript。后者是Mozilla对ECMAScript的非标准化扩展。V8旨在与JSC插件兼容,JSC是WebKit/Safari中的ECMAScript实现。因此,它实现了ECMAScript的许多非标准扩展,这些扩展也在JSC中,其中大多数也在Mozilla的JavaScript语言中。没有计划将JSC中没有的非标准功能添加到V8中。

有趣的是,他写道,2010年10月8日,ECMAScript 5于2009年12月发布,两个月前,ECMASscript 5的超集Javascript 1.8.5发布。

因此,问题仍然存在,谷歌何时会更新v8以在ECMAScript第五版上运行?是否有升级到ECMAScript最新标准化的计划?

ECMAScript 5实际上是这样设计的,因此实现不需要在其上"更新以运行"

现有行为几乎没有变化,但主要是ES5添加了新的本地对象(例如Object.createArray.prototype.mapString.prototype.trim等),并标准化了一些现有的事实特征(从无处不在的"字符串文字中的行终止符"、"字符串上的属性访问"answers"间接评估行为"到不太流行的"访问器"和数组/字符串扩展)。

行为上最大的变化——严格模式——是出于同样的原因选择加入的;以使从ES3到ES5的过渡不那么痛苦。

话虽如此,V8确实实现了一组引人注目的ES5功能,包括严格模式(最近添加的功能之一)。

如果你看看我的ES5同胞。在表中,您可以看到Chrome中实现的ES5功能——它应该和V8密切相关(我认为——完全相关)。

您还可以看到,对严格模式的支持主要在Chrome中实现,这意味着它也应该在V8中实现。为了仔细检查,我只是在控制台(v8 v3.2.3.1)中运行了这段代码,并得到了预期的SyntaxError:

> (function(){"use strict"; with({x:1}) return x})()
(shell):1: SyntaxError: Strict mode code may not include a with statement
(function(){"use strict"; with({x:1}) return x})()
                          ^^^^

V8确实实现了ES5的大部分功能,包括严格模式;)