Javascript V8和ECMAScript的差异

Javascript V8和ECMAScript的差异,javascript,v8,Javascript,V8,在哪里可以找到V8和ECMAScript之间所有差异的列表?例如,V8支持const,这不是ECMAScript标准的一部分。编辑:直接回答:表示 或 除了少数边缘情况外,V8目前实现了所有ES5,只有这样,才能与当前其他浏览器处理给定情况的大多数方式兼容 因为它不会独立存在,所以您将要处理的几乎所有差异都将在围绕它的主机环境实现中进行处理。对于大多数用途,这是web浏览器提供的各种API。作为非浏览器示例,Node.js为文件系统和网络交互提供自定义API。就核心语言而言,没有多少回旋余地。除

在哪里可以找到V8和ECMAScript之间所有差异的列表?例如,V8支持
const
,这不是ECMAScript标准的一部分。

编辑:直接回答:表示 或

除了少数边缘情况外,V8目前实现了所有ES5,只有这样,才能与当前其他浏览器处理给定情况的大多数方式兼容

因为它不会独立存在,所以您将要处理的几乎所有差异都将在围绕它的主机环境实现中进行处理。对于大多数用途,这是web浏览器提供的各种API。作为非浏览器示例,Node.js为文件系统和网络交互提供自定义API。就核心语言而言,没有多少回旋余地。除去DOM,JavaScript是一种非常简单的语言(这也是它如此出色的部分原因),并且有一个真正的特定规范文档

ES5是从ES3开始的一个迭代,如果不使用“use strict”,则几乎100%向后兼容。在经历了近十年的停滞以及未能在主要JavaScript引擎实现者之间达成共识之后,ES5诞生了,并且主要局限于消除和解决该语言最严重的问题。ES5的主流使用范围是数组附加、对象附加(主要是Object.create)、Function.bind和strict模式(完全是剥离功能),以及一些内置JSON和base64之类的本地助手

大部分时间都花在费力地定义JavaScript中存在了近15年的行为的每一个细节,以及将被弃用并最终删除的特性列表上(
with
eval
的各种用法,等等)

和谐(ES6)是我们将要看到的第一个真正的大变化。ES5实现了让引擎实现在同一个页面上并消除JS中大部分有问题的部分的目标。展望ES6,是时候解决一些需要修改语法才能解决的基本语言问题了。ES6计划在2013年底完成,但JS引擎中已经实现了大块,以便测试它们并了解它们在实际使用中是如何工作的。网络是一个活生生的东西,实施新的标准并不是创建一个新的规范,然后像大多数其他行业一样在世界上发布它。想法是浮动的,必须在实现者级别(编写V8、Spidermonkey、JSC、Chakra等的人)和实际用户级别(在本例中,用户是编写代码以在这些引擎中运行的web开发人员)通过集合。象牙塔式听写只会导致缺乏使用

特别是在
const
的情况下:这一点目前还没有完全定义。它是一个关键字,在V8和Spidermonkey中具有相似但不完全相同的功能,对于ES6具有相似但不完全相同的含义。如果您希望您的目标受众的引擎当前支持它,那么您可能可以安全地使用它,但在实现时,它在技术上并不是任何官方规范的一部分


除此之外,还有一些“主机对象”,它们由运行JS脚本的给定引擎公开。JavaScript首先是作为一种实现存在的,其次是作为一种规范存在的,所以直到最近,对于非专家来说,还不清楚底线在哪里。当它在浏览器中运行时(通常情况下),将作为主机对象公开以供自动使用。DOM的功能在很大程度上是使用描述的,并且在W3C的权限范围内。大量的规范实现包括6个顶级部分、近50个独立的工作组和大约1000个独立的规范。这些接口暴露于JavaScript,但完全不受任何JavaScript规范要求的控制。DOM包含大量描述的功能和不断变化的实现。

刚刚了解到,通过改进我的答案,我丧失了为其赢得荣誉的能力。社区维基非常愚蠢。显然,我错了,而且愚蠢。问题是我倾向于回答更高层次的问题。这是一个关于v8引擎的相对平淡无奇的问题,答案是关于实现的不断膨胀但深入的讨论。这应该在某个地方。但我不知道在哪里。看起来我对mods的请求起了作用——不再是CW的回答:)我的诗太棒了。需要有一个诗歌名人堂。