ECMAScript与JavaScript有什么区别?根据我的推断,ECMAScript是标准,JavaScript是实现。这是对的吗?
答案 0 :(得分:555)
我认为应该有一点历史课。
JavaScript最初被命名为Mocha并更改为Livescript但最终成为JavaScript。
重要的是要注意,JavaScript出现在ECMAscript之前,历史将告诉你原因。
从头开始,JavaScript从Java派生名称,最初Brendan Eich(JS的创建者)被要求为Netscape开发类似于Java的语言。
但是,Eich认为Java过于复杂,并且所有规则都很复杂,因此开始创建一种简单的语言,即使是初学者也可以编写。这在诸如放松需要分号这样的事情中很明显。语言完成后,Netscape的营销团队要求Sun允许他们将JavaScript命名为营销噱头,因此大多数从未使用过JavaScript的人都认为它与Java有关。
在浏览器中发布JavaScript后大约一年或两年,微软的IE采用了该语言,并开始制作自己的实现,如JScript。与此同时,在Netscape不得不关闭其项目之后不久,IE就占据了市场主导地位。
在Netscape失败之前,他们决定启动一个标准,指导JavaScript的路径,名为ECMAScript。
ECMAScript发布了一些版本,并在1999年发布了他们的最新版本(ECMAScript 3),然后才进入未来10年的休眠状态。在这10年中,微软主宰了这些场景,但同时他们没有改进他们的产品,因此Firefox诞生了(由Eich领导)以及其他一系列浏览器,如Chrome,Opera。
ECMAScript在2009年发布了第5版(第4版被废弃),具有严格模式等功能。从那时起,ECMAScript已经获得了很大的发展势头,并计划在几个月后发布其第6版,其中迄今为止发生了最大的变化。
您可以在此处使用ECMAScript 6的功能列表http://kangax.github.io/es5-compat-table/es6/以及浏览器支持。您甚至可以像使用CoffeeScript一样开始编写Ecmascript 6,并使用编译器编译为Ecmascript 5.
ECMAScript是否是语言而JavaScript是一种方言是有争议的,但并不重要。如果你继续这样想,可能会让你感到困惑。没有可以运行ECMAScript的编译器,我相信JavaScript被认为是实现名为ECMAScript的标准的语言。
还有其他明显的语言可以实现ECMAScript,例如ActionScript(用于Flash)
答案 1 :(得分:178)
ECMAScript是语言,而JavaScript,JScript甚至ActionScript 3都被称为“方言”。 Wikipedia对此有所了解。
答案 2 :(得分:136)
ECMAScript = ES:
ECMAScript是脚本语言的标准。
Javascript等语言基于ECMAScript标准。
ECMA标准基于多种原创技术,最着名的是JavaScript(Netscape)和JScript(Microsoft)。
ECMA指欧洲计算机制造商协会
JavaScript = JS:
JavaScript是ECMAScript标准中最受欢迎的实现。
的Javascript的核心特征是基于ECMAScript标准, 但JavaScript还有有没有其他的附加功能 ECMA规范/标准。
ActionScript和JScript是实现ECMAScript的其他语言。
JavaScript已提交给ECMA进行标准化,但由于Javascript名称的商标问题,该标准被称为ECMAScript。
每一个浏览器具有JavaScript解释。
ES5 = ECMAScript 5:
ES5是ECMAScript的版本(旧版/当前版)。
ES5是您今天在浏览器中使用的JavaScript。
ES5不需要构建步骤(转换器)将其转换为将在今天的浏览器中运行的内容。
的ECMAScript版本5在2009年12月结束, 所有主要浏览器的最新版本(Chrome浏览器,Safari浏览器,火狐和IE) 已实施第5版。
5.1版本在2011年6月,结束了。
ES6 = ECMAScript 6 = ES2015 = ECMAScript 2015:
ES2015是ECMAScript的一个版本(新版/未来版)。
正式名称应使用ES2015代替ES6。
ES6将解决许多核心语言缺点在寻址 打字稿和CoffeeScript的。
ES6是JavaScript的下一次迭代,但它不能在今天的浏览器中运行。
有相当多的转发器会导出ES5以便在浏览器中运行。
<强> BabelJS:强>
BabelJS是最受欢迎的转换器,它将新的JavaScript ES6转换为旧的JavaScript ES5。
BabelJS使得今天编写下一代JavaScript成为可能(意味着ES2015)。
BabelJS只需获取ES2015文件并将其转换为ES5文件。
现在的浏览器版本现在可以理解新的JavaScript代码(ES2015),即使他们还不支持它。
<强>打字稿和CoffeeScript的:强>
两者都在ES5之上提供语法糖 然后是transcompiled到ES5兼容的JavaScript。
您编写TypeScript或CoffeeScript,然后转换器将其转换为ES5 JavaScript。
答案 3 :(得分:42)
技术上ECMAScript是每个人都在使用和实现的语言 - 这是多年前Netscape和Microsoft坐下来并试图标准化JavaScript(Netscape的脚本语言)和JScript(Microsoft)之间脚本的规范。 / p>
随后所有这些引擎表面上都在实现ECMAScript,但是JavaScript(名称)现在因传统的命名原因而悬而未决,并且作为Mozilla的各种非标准扩展(他们希望能够实际实现)的营销术语“版本”)
答案 4 :(得分:33)
JavaScript = ECMAScript + DOM API;
ECMAScript®语言规范定义了用于创建和编辑对象,数组,数字等的所有逻辑......
DOM API可以与HTML / XML文档进行通信(例如document.getElementById('id');
)。
JavaScript命名历史:
Mocha►LiveScript►JavaScript►(JS的一部分产生)ECMA-262►ECMAScript►JavaScript(包含ECMAScript + DOM API)
答案 5 :(得分:25)
什么是ECMAScript,即ES?
ECMAScript是脚本语言的标准 Javascript语言基于ECMAScript标准。
Javascript与ECMAScript完全相同吗?
JavaScript = ECMAScript + DOM API;
DOM API,如:document.getElementById('id');
其他语言是否使用ECMAScript标准?
为什么称为ECMAScript?
答案 6 :(得分:15)
各种JavaScript版本是ECMAScript标准的实现。
答案 7 :(得分:11)
我知道这是一个老帖子,但希望这会对某人有帮助。
在1990年代,不同版本的js开始像netscape中的javascript一样出现, 来自微软的Js脚本。所以ecmascript被引入作为标准。但ecmascript只是javascript的一部分,它指定了它的核心语法,类型,对象等。可能这解释了跨越diff的javascript的不一致实现。浏览器
参考 - Wrox(面向Web开发人员的专业Javascript)
答案 8 :(得分:10)
根据我的理解,ECMAScript是“理论”或“规范”,Javascript是“实用”或“实施”。
答案 9 :(得分:9)
JavaScript 是一种 ECMAScript语言。
ECMAScript 不一定是 JavaScript。
答案 10 :(得分:7)
现有答案很好地解释了主要观点。
重点是ECMAScript是一种简单的抽象语言,没有任何特定于域的扩展,它本身就没用。 specification仅定义语言及其核心对象。
虽然JavaScript和ActionScript以及其他方言为其添加了特定于域的库,但您可以将其用于有意义的事情。
有许多ECMAScript engines,其中一些是开源的,另一些是专有的。您可以将它们链接到您的程序,然后将您的本机函数添加到全局对象,以便您的程序可编写脚本。虽然它们通常用于浏览器。
答案 11 :(得分:5)
Javascript是原始名称,旨在利用java的流行度。 ECMA是监督最终实施标准的标准机构,因此名称大致相同。
实现还有其他名称,如V8或Rhino等。
答案 12 :(得分:3)
ECMAScript 是 JavaScrip 的标准,请查看 MDN 中的这些声明:
JavaScript(JS)是轻量级解释或JIT编译 具有一流功能的编程语言。虽然它是最多的 众所周知的网页脚本语言,很多非浏览器 环境也使用它,例如node.js,Apache CouchDB和Adobe 杂技演员。 JavaScript是一种基于原型的多范式动态 语言,支持面向对象,命令式和声明性 (例如函数式编程)样式。阅读有关JavaScript的更多信息。
JavaScript的标准是 ECMAScript 。截至2012年,所有现代 浏览器完全支持ECMAScript 5.1。旧版浏览器至少支持 ECMAScript 3. 2015年6月17日,ECMA International发布了第六期 ECMAScript的主要版本,正式名称为ECMAScript 2015年,最初被称为ECMAScript 6或ES6。以来 然后,ECMAScript标准在每年的发布周期。这个 文档是指当前的最新草案版本 ECMAScript 2018。
有关详细信息,请访问here
答案 13 :(得分:2)
我怀疑我们是否会使用“ECMAScript”这个词,如果不是因为“JavaScript”这个名字由Sun拥有。出于所有意图和目的,该语言是JavaScript。你不去书店寻找ECMAScript书籍,不是吗?
说“JavaScript”是实现有点太简单了。 JScript是Microsoft的实现。
答案 14 :(得分:2)
以下是我的发现:
由David Flanagan撰写的JavaScript: The Definitive Guide提供了一个非常简洁的解释:
JavaScript是在Web早期在Netscape创建的,并且 从技术上讲,&#34; JavaScript&#34;是Sun授权的商标 微系统(现为Oracle)用于描述Netscape的(现在是Mozilla&#39; s) 实施该语言。 Netscape提交了该语言 ECMA的标准化和由于商标问题, 语言的标准化版本被困在了尴尬的名字 &#34; ECMAScript的&#34 ;.出于同样的商标原因,微软的版本 该语言被正式称为&#34; JScript&#34;。在实践中,差不多 每个人都称之为JavaScript语言。
微软的blog post似乎同意弗拉纳根所说的那样......
ECMAScript是我们所有人的JavaScript语言的官方名称 知道和爱。
..这让我觉得this参考帖子中的JavaScript
所有出现的内容(再次由Microsoft发布)必须由ECMASCript
替换。他们实际上似乎只在this,更近期和更多技术文档页面中使用ECMAScript
时要小心。
w3schools.com似乎同意上述定义:
JavaScript由Brendan Eich于1995年发明,并成为ECMA ECMA-262是该标准的正式名称。 ECMAScript是该语言的官方名称。
这里的关键是:语言的官方名称。
如果您检查Mozilla 's JavaScript version pages,您将会遇到以下声明:
已过时。语言的显式版本控制和选择加入 功能是特定于Mozilla的,正在被删除。 Firefox 4是最后一个引用JavaScript版本的版本 (1.8.5)。现在有了新的ECMA标准,JavaScript语言功能 经常在ECMA-262版本中提到它们的初始定义 例如ECMAScript 2015。
当您看到最新的发行说明时,您将始终看到对ECMAScript标准的引用,例如:
已实施ES2015 Symbol.toStringTag属性(错误1114580)。
ES2015 TypedArray.prototype.toString()和 已实现TypedArray.prototype.toLocaleString()方法 (错误1121938)。
Mozilla Web文档还有page,解释了ECMAScript和JavaScript之间的区别:
然而,总括性术语&#34; JavaScript&#34;如在Web浏览器中所理解的那样 context包含几个非常不同的元素。其中一个是 核心语言(ECMAScript),另一个是Web API的集合, 包括DOM(文档对象模型)。
<强>结论强>
据我所知,人们在某种程度上使用JavaScript这个词来引用核心ECMAScript规范。
我想说,所有现代JavaScript实现(或JavaScript引擎)实际上都是ECMAScript实现。检查来自Google的V8 Engine的定义,例如:
V8是谷歌开源的高性能JavaScript引擎 在C ++中,用于Google Chrome的开源浏览器, 以及Node.js等。它按照中的规定实现ECMAScript ECMA-262。
他们似乎可以互换地使用JavaScript和ECMAScript这个词,我会说它实际上是一个ECMAScript引擎?
因此,大多数JavaScript引擎实际上都在实现ECMAScript标准,但它们不是将它们称为ECMAScript引擎,而是将它们称为JavaScript引擎。 This回答也支持我看待情况的方式。
答案 15 :(得分:1)
JavaScript是围绕ECMAScript标准形成的语言的一个分支。我相信ECMA是欧洲计算机制造商协会,并不是说这是真的相关或任何事情。
不要忘记围绕ECMA Script标准形成的另一种流行语言是ActionScript,用于Adobe Flash / Flex。