什么是ECMAScript?


118

在Visual Studio中,当我将脚本类型设置为JavaScript时,这是智能感知中的一个选项。

快速的Google搜索得出了不理想的结果,使我相信它的使用并不十分流行。

  • 它是什么?
  • 有人用吗? (<script type="text/ecmascript">)
  • 为什么?


了解ECMAScript和Javascript之间区别也有助于理解ECMAScript。
RBT

Answers:


169

JavaScript是ECMAScript的子集。JavaScript基本上是ECMAScript的核心,但是基于它。诸如ActionScript,JavaScript,JScript之类的语言均以ECMAScript为核心。相比之下,AS / JS / JScript是3辆不同的汽车,但是它们都使用相同的引擎...尽管它们的外观不同,但是对它们进行了多次修改以使其独特。

历史是Brendan Eich创建了Mocha,后来成为LiveScript和后来的JavaScript。Netscape向Ecma International(开发标准)提供了JavaScript ,并将其重命名为ECMA-262,又名ECMAScript。

重要的是要注意,Brendan Eich的“ JavaScript”不同于ECMAScript的方言。他构建了重命名为ECMAScript 的核心语言,该语言不同于当今浏览器供应商实现的JavaScript。

http://en.wikipedia.org/wiki/ECMAScript


33
如果以ECMAScript为核心,这是否会使Javascript成为ECMAScript的子集?
瑞安·阿莫斯

15
JavaScript(历史上)具有ECMAScript没有的东西。JavaScript(历来试图做到)拥有ECMAScript拥有的一切。因此,该帖子是正确的,ECMAScript是JavaScript的子集。但是,两者彼此之间保持着非常接近的关系(虽然ActionScript确实有其渊源,但它实际上已不再被认为是ECMAScript语言,它已经相去甚远了)。ES和JS术语几乎可以互换。
内森·沃尔

22
我认为“ ECMAScript是JavaScript的子集”并不正确相反,您引用的Wikipedia文章指出ECMAScript是标准,而JavaScript是该标准的众所周知的实现(带有扩展名)
DavidRR 2014年

2
我想你想说的是ECMAScript is a superset of Javascript
卡亚特

6
因为Javascript实现了ECMAScript并在其之上构建,所以我说Javascript是ECMAScript的超集。
RayLoveless


32

ECMAScript = ES:

  • ECMAScript是脚本语言的标准。

  • 像Javascript这样的语言都基于ECMAScript标准。

  • ECMA Standard基于多种原始技术,其中最著名的是JavaScript(Netscape)和JScript(Microsoft)。

  • ECMA是指欧洲计算机制造商协会


另一方面:


JavaScript = JS:

  • JavaScript是ECMAScript标准的最受欢迎的实现。

  • Javascript的核心功能基于ECMAScript标准,但是Javascript还具有ECMA规范/标准中未包含的其他附加功能。

  • ActionScript和JScript是实现ECMAScript的另一种语言。

  • JavaScript已提交给ECMA进行标准化,但由于商标名称Javascript的问题,该标准被称为ECMAScript。

  • 每个浏览器都有一个JavaScript解释器。


有关此结帐的更多详细信息,请点击此处,我​​的完整答复JavaScript和ECMAScript有什么区别?


几乎每个浏览器都支持JavaScript,但是有很多CLI浏览器,例如link和lynx却不支持,此外还有:links2,w3m,elinks和edbrowse。大多数CLI浏览器也不支持JS。
卡西欧

16

ECMA代表-欧洲计算机制造商协会。ECMAScript是脚本语言的标准。它指定了脚本语言应提供的核心功能以及应如何实现这些功能。Javascript最初是在Netscape上创建的,他们希望对语言进行标准化。因此,他们将语言提交给了欧洲计算机制造商协会(ECMA)进行标准化。但是,名称Javascript出现商标问题,该标准被称为ECMAScript,这也是今天的名称。

因此,当您指定(<script type="text/ecmascript">)时,由于Web浏览器支持ECMAScript解释,因此您可以使用任何实现ECMA标准的脚本语言。


2

ECMA是标准化JavaScript的组织。他们将语言命名为ECMAScript,但是“ JavaScript”是赢得“名称竞赛”的术语


1

这是关于此主题的另一种观点。它或多或少是从经验中得出的,我无能为力。任何JavaScript验证程序以及使用JavaScript的每个人都会告诉您

alert("hello World");

是有效的JavaScript。我也同意。

但是,ECMAScript验证程序可能会告诉您它无效,因为alert()并非ECMAScript的一部分,而是浏览器JavaScript的典型功能。JavaScript有许多功能,仅在浏览器环境中有意义,例如window.navigator,window.document,WebSocket,navigator.geolocation。甚至有人会说,这不是JavaScript的一部分,而是HTML5的一部分,这是不正确的,因为HTML5只是标记语言。但是,即使这些精美的新功能是用JavaScript实现的,它们也常常被称为HTML5。

JavaScript也可以用于服务器端脚本。然后,所有地理或媒体api都没有意义。因此,用于服务器端脚本的JavaScript再次更接近ECMAScript,后者没有这种典型的浏览器功能。

我无法真正发现Math对象(例如Math.sqrt(9))是否是ECAMScript的一部分,或者ECMAScript是否真的仅定义了该语言的语法并且没有任何内置功能。但是一个ECMAScript验证器接受Math.sqrt(9)作为有效的ECMAScript,而var test = window.document; 无法通过ECMA验证。

即使以下内容将其链接到JavaScript文档,我认为这也是ECMAScript的内置功能集(对象和功能):https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference / Global_Objects

因此,我认为JavaScript与浏览器紧密相关,而ECMAScript实际上只有一组非常基本的功能(如果有的话)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.