JavaScript和ECMAScript的区别是什么?

ECMAScript和JavaScript的区别是什么?根据我的推断,ECMAScript是标准,JavaScript是实现。这对吗?

153253 次浏览

Javascript是它最初的名字,意在利用java的流行。ECMA是监督最终实施的标准的标准机构,因此名称大致相同。

实现还有其他名字,比如V8或者Rhino等等。

各种JavaScript版本都是ECMAScript标准的实现。

如果不是因为“JavaScript”这个名字属于Sun,我怀疑我们永远不会使用“ECMAScript”这个词。无论如何,这种语言都是JavaScript。你不会去书店找ECMAScript的书吧?

说“JavaScript”就是实现有点太简单了。JScript是微软的实现。

JavaScript 是一个 ECMAScript语言。

ECMAScript 不一定 JavaScript。

从技术上讲,ECMAScript是每个人都在使用和实现的语言——它是许多年前Netscape和Microsoft坐下来试图在JavaScript (Netscape的脚本语言)和JScript (Microsoft的脚本语言)之间标准化脚本时创建的规范。

随后,所有这些引擎表面上都实现了ECMAScript,然而JavaScript(这个名字)现在因为传统的命名原因而存在,并且作为Mozilla用于各种非标准扩展的营销术语(他们希望能够真正“版本”)。

JavaScript是围绕ECMAScript标准形成的语言的一个分支。我相信ECMA是欧洲计算机制造商协会,并不是说这是真正相关的。

不要忘记另一种围绕ECMA Script标准形成的流行语言是ActionScript,用于Adobe Flash/Flex。

ECMAScript是语言,而JavaScript, JScript,甚至ActionScript 3被称为“方言”。维基百科说明了这一点。

我知道这是一个老帖子,但希望这能帮助到一些人。

在20世纪90年代,js的不同版本开始出现,比如netscape的javascript, Js脚本来自微软。所以ecmascript作为标准被引入。但是ecmascript只是javascript的一部分,它指定了它的核心语法、类型、对象等。这可能解释了javascript在不同浏览器上实现不一致的原因

Wrox(面向Web开发人员的专业Javascript)

在我的理解中,ECMAScript是“理论”或“规范”,Javascript是“实践”或“实现”。

现有的答案很好地解释了要点。

主要的一点是ECMAScript是一种纯粹的抽象语言,没有任何特定领域的扩展,它本身是无用的。规范只定义了语言和它的核心对象。

而JavaScript和ActionScript以及其他方言则为其添加了特定于领域的库,因此您可以将其用于有意义的事情。

有许多ECMAScript引擎,其中一些是开源的,另一些是专有的。你可以将它们链接到你的程序中,然后将你的本机函数添加到全局对象中,这样你的程序就可以脚本化了。尽管它们通常在浏览器中使用。

JavaScript = ECMAScript + DOM + 物料清单;

  • ECMAScript®语言规范定义了创建和编辑对象、数组、数字等的所有逻辑…

  • DOM (Document Object M模型)使得与HTML/XML文档(例如document.getElementById('id');)通信成为可能。

  • BOM (Browser Object M模型)是浏览器对象(例如位置对象、历史对象、表单元素)的层次结构。

JavaScript命名的历史:

Mocha►LiveScript►JavaScript►(部分JS结果)ECMA-262►ECMAScript►JavaScript(由ECMAScript + DOM + BOM组成)

我觉得该上一堂历史课了。

JavaScript最初被命名为Mocha,后来改为Livescript,但最终变成了JavaScript。

值得注意的是,JavaScript出现在ECMAscript之前,历史会告诉你为什么。

从头开始,JavaScript的名字来源于Java,最初Brendan Eich (JS的创造者)被要求为Netscape开发一种类似于Java的web语言。

然而,Eich认为Java的所有规则都太复杂了,所以开始创建一种更简单的语言,即使是初学者也可以编写代码。这在一些事情上很明显,比如放松对分号的需求。

在语言完成后,Netscape的营销团队要求Sun允许他们将其命名为JavaScript作为营销噱头,这就是为什么大多数从未使用过JavaScript的人认为它与Java有关。

在JavaScript在浏览器中发布大约一两年之后,微软的IE采用了这种语言,并开始制作自己的实现,比如JScript。与此同时,IE在市场上占据主导地位,不久之后网景不得不关闭它的项目。

在网景公司倒闭之前,他们决定建立一个标准来指导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)

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

  • ES5是ECMAScript的一个版本(旧版本/当前版本)。

  • ES5是你现在所知道并在浏览器中使用的JavaScript。

  • ES5不需要构建步骤(编译器)来将其转换为可以在当前浏览器中运行的内容。

  • ECMAScript第五版于2009年12月完成, 所有主要浏览器(Chrome、Safari、Firefox和IE)的最新版本 已经实现了版本5。李< / p > < / >

  • 5.1版于2011年6月完成。

ES6 = ES2015 = ECMAScript 2015:

  • ES2015是ECMAScript(新/未来版本)的一个版本。

  • 官方名称应该是ES2015,而不是ES6。

  • ES6将解决在 TypeScript和CoffeeScript.

  • .
  • ES6是JavaScript的下一个迭代,但它不能在今天的浏览器中运行。

  • 有相当多的编译器将导出ES5以便在浏览器中运行。

BabelJS:

  • BabelJS是最流行的将新的JavaScript ES6转换为旧的JavaScript ES5的编译器。

  • BabelJS使得今天编写下一代JavaScript成为可能(意味着ES2015)。

  • BabelJS只是将ES2015文件转换为ES5文件。

  • 当前的浏览器版本现在可以理解新的JavaScript代码(ES2015),即使它们还不支持它。

TypeScript和CoffeeScript:

  • 两者都在ES5之上提供语法糖 然后被编译成兼容ES5的JavaScript。李< / p > < / >

  • 你编写TypeScript或CoffeeScript,然后转译器将其转换为ES5 JavaScript。

ECMAScriptJavaScript的标准,看看中数的这些声明:

enter image description here

JavaScript

JavaScript (JS)是一个轻量级解释型或jit编译型 具有一流函数的编程语言。虽然它是最 作为Web页面的脚本语言而闻名,许多非浏览器 环境也使用它,如node.js, Apache CouchDB和Adobe 杂技演员。JavaScript是基于原型的、多范式的、动态的 语言,支持面向对象、命令式和声明式 (例如函数式编程)风格。


ECMAScript

JavaScript的标准是ECMAScript。截至2012年,都是现代的 浏览器完全支持ECMAScript 5.1。旧浏览器至少支持 ECMAScript 3。2015年6月17日,ECMA国际发布了第六届 ECMAScript的主要版本,正式名称为ECMAScript 2015年,最初被称为ECMAScript 6或ES6。自 然后,ECMAScript标准每年发布一次。这 文档指的是最新的草案版本 ECMAScript 2018。< / p >

欲了解更多信息,请访问在这里

以下是我的发现:

JavaScript:权威指南,作者David Flanagan给出了非常简洁的解释:

JavaScript是Netscape在Web早期创建的 从技术上讲,“JavaScript”是Sun授权的商标 Microsystems(现在的甲骨文)用来描述Netscape(现在的Mozilla)的Microsystems(现在的甲骨文) 语言的实现。网景公司提交的语言 ECMA的标准化和由于商标问题 该语言的标准化版本被这个尴尬的名字困住了 “ECMAScript”。出于同样的商标原因,微软的 该语言的正式名称为“JScript”。实际上,差不多

微软的博客似乎同意弗拉纳根的解释。

ECMAScript是JavaScript语言的官方名称

.. 这让我认为在参考帖子中出现的JavaScript(再次由微软发布)必须由ECMASCript取代。实际上,他们似乎很谨慎地只在中使用ECMAScript,这是一个更近、更有技术含量的文档页面。

w3schools.com似乎与上面的定义一致:

JavaScript由Brendan Eich在1995年发明,并成为ECMA 1997年的标准。ECMA-262是该标准的正式名称。

. ECMAScript是该语言的官方名称

这里的关键是:语言的正式名称

如果你选择Mozilla的JavaScript版本页面,你会遇到下面的语句:

< p >弃用。语言的显式版本控制和选择 这些特性是mozilla特有的,正在被删除。 Firefox 4是最后一个使用JavaScript的版本 于(1.8.5)。有了新的ECMA标准,JavaScript语言的特性现在就有了 在ECMA-262版本中经常提到它们的初始定义 例如ECMAScript 2015.

当你看到最近的发布说明时,你总是会看到对ECMAScript标准的引用,比如:

  • ES2015标志。toStringTag属性已经实现(bug 1114580)。

  • ES2015 TypedArray.prototype.toString( TypedArray.prototype.toLocaleString()方法已经实现 (错误1121938). < / p > < /李>

Mozilla Web Docs也有一个页面来解释ECMAScript和JavaScript之间的区别:

然而,在web浏览器中理解的保护伞术语“JavaScript” 上下文包含几个非常不同的元素。其中之一是 核心语言(ECMAScript),另一个是Web api的集合, 包括DOM(文档对象模型).

结论

根据我的理解,人们在一定程度上随意地使用JavaScript这个词来指代核心ECMAScript规范。

我想说,所有现代的JavaScript实现(或JavaScript引擎)实际上都是ECMAScript实现。检查谷歌中V8引擎的定义,例如:

V8是谷歌的开源高性能JavaScript引擎,编写 在谷歌Chrome中使用,谷歌的开源浏览器, 以及在Node.js中,等等。实现中指定的ECMAScript ecma - 262。< / p >

他们似乎交替使用JavaScript和ECMAScript这个词,我想说它实际上是一个ECMAScript引擎?

因此,大多数JavaScript引擎实际上都实现了ECMAScript标准,但它们不称自己为ECMAScript引擎,而是称自己为JavaScript引擎。的答案也支持了我对这种情况的看法。