我注意到v8在ECMAScript第5版的问题上相当沉默。
V8按照ECMA-262第三版中指定的方式实现ECMAScript,并在Windows和Vista、MacOSX10.5 (Leopard)和使用IA-32或ARM处理器的Linux系统上运行。
即使是窃听器似乎也很安静..。
在one bug上,您可以发现a commiter正在编写以下内容:
V8是ECMAScript的实现,而不是JavaScript的实现。后者是Mozilla对ECMAScript的非标准化扩展。V8打算与JSC兼容,JSC是WebKit/Safari中的ECMAScript实现。因此,它实现了许多ECMAScript的非标准扩展,这些扩展也是在JSC中实现的,其中大多数也是用Mozilla的JavaScript语言实现的。没有计划向V8中添加不存在于JSC中的非标准特性。
有趣的是,他写道,2010年10月8日,ECMAScript 5于2009年12月发布,两个月前,Javascript 1.8.5 --一个ECMAScript 5的超集--发布。
因此,问题仍然是谷歌何时更新v8运行在ECMAScript第5版?有没有计划升级到ECMAScript的最新标准化?
发布于 2011-05-26 14:00:16
ECMAScript 5实际上是以这样的方式设计的,这样实现就不需要在上“更新以运行”。
现有行为几乎没有变化,但主要是ES5添加了新的本机对象(例如Object.create
、Array.prototype.map
、String.prototype.trim
等)。并标准化了一些现有的事实上的特性(从无处不在的“字符串文字行终止符”、“字符串上的属性访问”和“间接eval行为”到不那么流行的“访问器”和数组/字符串扩展)。
行为上最大的变化--严格的模式--是出于同样的原因选择加入的,从ES3到ES5的转变不那么痛苦。
话虽如此,V8确实实现了明显的ES5特性块,包括严格模式(最近增加的一个)。
如果你看一下我的ES5 compat. table,你会发现Chrome实现了ES5特性--这些特性应该(我认为是完全相关的)与V8密切相关。
您还可以看到,对严格模式的支持是largely implemented in 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特性,包括严格的模式;)
https://stackoverflow.com/questions/6131803
复制相似问题