在哪里可以找到V8和ECMAScript之间所有差异的列表?例如,V8支持const
,这不是ECMAScript标准的一部分。
答案 0 :(得分:40)
修改:直接回答:Track status of ES5 implementations in progress表示V8 googlecode issues tagged es5 或https://github.com/joyent/node/wiki/ECMA-5-Mozilla-Features-Implemented-in-V8
V8除了少数边缘情况之外,目前还实现了所有ES5,只有这样才能符合其他当前浏览器处理给定情况的大部分内容。
因为它不会独立生存几乎所有你将要处理的差异都将在它周围的主机环境实现中。对于大多数用途,这是Web浏览器提供的各种API。作为非浏览器示例,Node.js为文件系统和网络交互提供自定义API。在核心语言方面,没有那么多的摆动空间。减去DOM,JavaScript是一种非常简单易用的语言(为什么它太棒了),并且有一个真正特定的规范文档。
如果不使用'use strict',ES5是从ES3向上的迭代,几乎100%向后兼容。经过近十年的停滞以及无法在主要的JavaScript引擎实现者之间达成共识,ES5的诞生和限制主要是为了解决和解决语言中最严重的问题。主流使用ES5的程度是数组附加,对象附加(主要是Object.create),Function.bind和严格模式(完全关于剥离功能),以及少数本地助手像内置JSON和base64。
大部分240 page specification花费了大量精力来定义JavaScript中已存在的行为近15年的每一个细节,以及将被弃用并最终删除的功能列表(with
,eval
等的各种用途。
和谐(ES6)是我们将要看到的第一个真正的重大变化。 ES5完成了在同一页面上获取引擎实现并消除JS的大部分问题部分的目标。期待ES6,现在是时候解决一些需要修改语法的基本语言问题了。 ES6计划于2013年底完成,但是大型块已经在JS引擎中实现,以便测试它们并了解它们在实际使用中的工作方式。网络是一个生物,实施新标准不是创建一个新的规范,然后在世界上释放它,就像大多数其他行业一样。想法浮出水面,必须在实施者层面(编写V8,Spidermonkey,JSC,Chakra等等)然后实际用户级别(在这种情况下用户是Web开发人员编写代码以在这些引擎中运行)进行调整。 。象牙塔听写只会导致缺乏使用。
特别是在const
的情况下:目前尚未完全确定。它是V8和Spidermonkey中具有相似但不完全相同功能的关键字,并且与ES6具有相似但不完全相同的含义。如果您希望目标受众的引擎目前支持它,那么您可以安全地使用它,但是实施它并不是技术上任何官方规范的一部分。 migrating let' and
const'
除此之外,由给定引擎公开的“主机对象”正在运行JS脚本.JavaScript首先作为实现存在,第二作为规范存在,所以直到最近,非专家才知道潜水线在哪里。当它在浏览器中运行时(通常就是这种情况),Document Object Model作为主机对象公开以供自动使用。 DOM的功能主要使用IDL来描述,并且属于W3C的范围。众多规范实现包括6个顶级部分,近50个独立工作组和大约1000个单独的规范。这些是暴露给JavaScript的接口,但完全不受任何JavaScript规范要求的影响。 DOM涵盖了所描述功能的巨大空间并不断改变其实现。