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


当前回答

ECMAScript = en:

ECMAScript是脚本语言的标准。 像Javascript这样的语言是基于ECMAScript标准的。 ECMA标准基于几种原始技术,最著名的是JavaScript (Netscape)和JScript (Microsoft)。 ECMA的意思是欧洲计算机制造商协会

JavaScript = JS:

JavaScript is the most popular implementation of the ECMAScript Standard. The core features of Javascript are based on the ECMAScript standard,  but Javascript also has other additional features that are not in the ECMA specifications/standard. ActionScript and JScript are other languages that implement the ECMAScript. JavaScript was submitted to ECMA for standardization but due to trademark issues with the name Javascript the standard became called ECMAScript. Every browser has a JavaScript interpreter.

ES5 = ECMAScript 5:

ES5是ECMAScript的一个版本(旧版本/当前版本)。 ES5是你现在所知道并在浏览器中使用的JavaScript。 ES5不需要构建步骤(编译器)来将其转换为可以在当前浏览器中运行的内容。 ECMAScript第五版于2009年12月完成, 所有主要浏览器(Chrome、Safari、Firefox和IE)的最新版本 已经实现了版本5。 5.1版于2011年6月完成。

ES6 = ES2015 = ECMAScript 2015:

ES2015是ECMAScript(新/未来版本)的一个版本。 官方名称应该是ES2015,而不是ES6。 ES6将解决许多核心语言缺陷 TypeScript和CoffeeScript。 ES6是JavaScript的下一个迭代,但它不能在今天的浏览器中运行。 有相当多的编译器将导出ES5以便在浏览器中运行。

通天塔:

BabelJS是最流行的将新的JavaScript ES6转换为旧的JavaScript ES5的编译器。 BabelJS使得今天编写下一代JavaScript成为可能(意味着ES2015)。 BabelJS只是将ES2015文件转换为ES5文件。 当前的浏览器版本现在可以理解新的JavaScript代码(ES2015),即使它们还不支持它。

TypeScript和CoffeeScript:

两者都在ES5的基础上提供了语法糖 然后被编译成兼容ES5的JavaScript。 你编写TypeScript或CoffeeScript,然后转译器将其转换为ES5 JavaScript。

其他回答

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

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

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

JavaScript是一种ECMAScript语言。

ECMAScript不一定是JavaScript。

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

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

以下是我的发现:

JavaScript: The Definitive Guide,由David Flanagan编写,提供了一个非常简洁的解释:

JavaScript was created at Netscape in the early days of the Web, and technically, "JavaScript" is a trademark licensed from Sun Microsystems (now Oracle) used to describe Netscape's (now Mozilla's) implementation of the language. Netscape submitted the language for standardization to ECMA and because of trademark issues, the standardized version of the language was stuck with the awkward name "ECMAScript". For the same trademark reasons, Microsoft's version of the language is formally known as "JScript". In practice, just about everyone calls the language JavaScript.

微软的一篇博客文章似乎同意弗拉纳根的解释,他说…

ECMAScript是JavaScript语言的官方名称 认识和爱。

. .这让我认为这篇参考文章中出现的所有JavaScript都必须被ECMASCript取代。实际上,他们似乎只在这个最新的、技术含量更高的文档页面上谨慎地使用ECMAScript。

W3schools.com似乎同意上述定义:

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

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

如果你检查Mozilla的JavaScript版本页面,你会遇到以下语句:

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

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

ES2015标志。toStringTag属性已经实现(bug 1114580)。 ES2015 typearray .prototype. tostring()和 TypedArray.prototype.toLocaleString()方法已经实现 (错误1121938)。

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。

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

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

ECMAScript = en:

ECMAScript是脚本语言的标准。 像Javascript这样的语言是基于ECMAScript标准的。 ECMA标准基于几种原始技术,最著名的是JavaScript (Netscape)和JScript (Microsoft)。 ECMA的意思是欧洲计算机制造商协会

JavaScript = JS:

JavaScript is the most popular implementation of the ECMAScript Standard. The core features of Javascript are based on the ECMAScript standard,  but Javascript also has other additional features that are not in the ECMA specifications/standard. ActionScript and JScript are other languages that implement the ECMAScript. JavaScript was submitted to ECMA for standardization but due to trademark issues with the name Javascript the standard became called ECMAScript. Every browser has a JavaScript interpreter.

ES5 = ECMAScript 5:

ES5是ECMAScript的一个版本(旧版本/当前版本)。 ES5是你现在所知道并在浏览器中使用的JavaScript。 ES5不需要构建步骤(编译器)来将其转换为可以在当前浏览器中运行的内容。 ECMAScript第五版于2009年12月完成, 所有主要浏览器(Chrome、Safari、Firefox和IE)的最新版本 已经实现了版本5。 5.1版于2011年6月完成。

ES6 = ES2015 = ECMAScript 2015:

ES2015是ECMAScript(新/未来版本)的一个版本。 官方名称应该是ES2015,而不是ES6。 ES6将解决许多核心语言缺陷 TypeScript和CoffeeScript。 ES6是JavaScript的下一个迭代,但它不能在今天的浏览器中运行。 有相当多的编译器将导出ES5以便在浏览器中运行。

通天塔:

BabelJS是最流行的将新的JavaScript ES6转换为旧的JavaScript ES5的编译器。 BabelJS使得今天编写下一代JavaScript成为可能(意味着ES2015)。 BabelJS只是将ES2015文件转换为ES5文件。 当前的浏览器版本现在可以理解新的JavaScript代码(ES2015),即使它们还不支持它。

TypeScript和CoffeeScript:

两者都在ES5的基础上提供了语法糖 然后被编译成兼容ES5的JavaScript。 你编写TypeScript或CoffeeScript,然后转译器将其转换为ES5 JavaScript。