V8何时会实现ECMAScript 5?

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(WebKit/Safari中的ECMAScript实现)兼容。因此,它实现了许多不在ECMAScript规范中的非标准扩展,这些扩展大部分也存在于Mozilla的JavaScript语言中。没有计划向V8添加不在JSC中的非标准特性。

有趣的是他在2010年10月8日写下了这篇文章,而ECMAScript 5则于2009年12月发布,而两个月前则发布了Javascript 1.8.5——它是ECMAScript 5的超集。

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


仅仅因为我找不到一个立场,这并不意味着你不能找到。或者,一个开发者不会知道。 - Evan Carroll
4
如果您不喜欢这个问题,请将其向下投票。但是,不要因为您不喜欢它而标记为“不是一个真实的问题”。那是滥用系统。这个问题非常真实,不含糊,并且很容易客观地回答:“v8什么时候实现ECMAScript 5?” - Evan Carroll
1
如果V8团队没有答案呢? - Matt Ball
3
你认为答案只能来自V8团队吗?它可能出现在Google EDU视频中,或者可能来自NodeConf 2011的演示......谁知道呢?可能是某个人知道。显然,确保所有提出的问题都可以由非团队成员解决并不是提问者或社区的责任。如果你不喜欢这个问题,就给它点“踩”,或者忽略它。最终,它会得到回答,或者平静地不被回答。 - Evan Carroll
1个回答

27

ECMAScript 5被设计成这样的方式,以便实现不需要"更新才能运行"。

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

最大的行为变化——严格模式——出于同样的原因是可选的;以使从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功能,包括严格模式 ;)

10
我提到过你的ECMAscript5兼容性表格非常棒吗?之前在类似的问题上已经看到过了...加1! - Tigraine
3
没有 with 语句!这就是为什么我们不能拥有好东西的原因。几千人滥用了一种语言特性,毁了它对我们其他人的用处。 - Michael Lorton
1
@Malvolio 是的!我明白你的感受。with 有其用途,在某些情况下很好用(例如 这个)。但我不得不承认,如果使用不当,它是很危险的。 - Camilo Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接