JavaScript和ECMAScript有什么区别?

14

如果我开始将我的脚本标签定义为ECMA,会发生什么?它会按照不同的标准执行吗?

实际上有人使用ECMA脚本而非纯粹的JavaScript吗?


2
不确定是否重复,但今天早些时候已经有人问过了:https://dev59.com/Tm855IYBdhLWcg3wj1MS 这里有一个几乎完全相同标题的问题:https://dev59.com/tnNA5IYBdhLWcg3wjOve - user113716
已问已答:https://dev59.com/tnNA5IYBdhLWcg3wjOve - Alexx Roche
这里我找到了一个很好的链接,解释了JavaScript和ECMAScript之间的区别:https://medium.freecodecamp.org/whats-the-difference-between-javascript-and-ecmascript-cba48c73a2b5 - S. Mayol
2个回答

29

ECMAScript是一种标准。JavaScript是该标准的实现(更确切地说是第3版标准的实现)。

其他的ECMAScript实现包括ActionScript和JScript。

此外,请注意JavaScript不止有一种。每个JavaScript引擎都可以实现自己的语言版本,只要符合ECMAScript的要求即可。这意味着浏览器(JS引擎)可以有额外的功能,但必须具备基本的ECMAScript功能。

现在来回答你的问题,根据RFC 4329,如果媒体类型设置为application/ecmascript而不是application/javascript,则必须遵守更严格的标准。

本文档定义了等效的处理要求,适用于文本/ JavaScript、文本/ ecmascript 和应用/ JavaScript 这些类型。与本文档中定义的其他媒体类型相比,使用和支持媒体类型应用/ ecmascript 的情况要少得多。为了更好地促进互操作性处理,利用这一点,本文档为此类型定义了更严格的处理规则。


不要使用“application/*”作为脚本类型,IE会无法处理。 - Marcel Korpel
好的观点,但我想使用application/*而不是text/*,以符合RFC建议。如果您将其替换为text/*,则仍适用相同的论点。 - Alin Purcaru
我不是很明白。你的意思是说,标准指的是语法和常见特性(比如Java中的接口),而某些实现可能允许额外的功能,比如lambda表达式,而另一些实现则不允许? - Abhinav Vishak
@AbhinavVishak 你所说的是正确的。你可以这样看待它... ES:JS ~ 接口:实现。或者至少理论上是这样的。然而在实践中,事情变得稍微有些复杂,并且有很多在线文章可供那些想要了解更多的人参考。作为一个注释,这里有一些ES与接口不同的方式。首先,没有人强制执行ES实现实际上是否符合标准。其次,ES至少在最近的版本中已经成为了一个活跃的标准。它是模块化的并且具有快速迭代。 - Alin Purcaru
这里我找到了一个很好的链接,解释了JavaScript和ECMAScript之间的区别:https://medium.freecodecamp.org/whats-the-difference-between-javascript-and-ecmascript-cba48c73a2b5 - S. Mayol

3

ECMAScript是一种编程语言标准,类似于Lisp。JavaScript是该标准的一种实现,同时还包括了非ECMAScript功能,如DOM。ActionScript(用于Flash)是另一种。就像使用“Lisp”编写代码需要使用像Common Lisp或Scheme这样的方言一样,直接编写ECMAScript可能不仅没有意义,而且在方言中也无法使用(虽然我认为ActionScript 3和最近的JavaScript应用了整个ECMAScript标准)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接