15

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

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

即使是错误跟踪器似乎也很安静......

一个错误上,您可以找到一个提交者写这个:

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

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

所以问题仍然存在,谷歌什么时候会更新 v8 以在 ECMAScript 第 5 版上运行?是否有升级到 ECMAScript 最新标准化的计划?

4

1 回答 1

27

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

现有行为几乎没有变化,但主要是 ES5 添加了新的原生对象(例如Object.create, Array.prototype.map,String.prototype.trim等)并标准化了一些现有的事实上的特性(来自无处不在的“字符串文字中的行终止符”、“字符串上的属性访问”、以及不太流行的“访问器”和数组/字符串扩展的“间接评估行为”)。

行为的最大变化——严格模式——出于同样的原因选择加入;使从 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 特性,包括严格模式;)

于 2011-05-26T14:00:16.843 回答