ECMAScript和JavaScript的区别是什么?根据我的推断,ECMAScript是标准,JavaScript是实现。这对吗?
当前回答
以下是我的发现:
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引擎。这个答案也支持了我对形势的看法。
其他回答
JavaScript是围绕ECMAScript标准形成的语言的一个分支。我相信ECMA是欧洲计算机制造商协会,并不是说这是真正相关的。
不要忘记另一种围绕ECMA Script标准形成的流行语言是ActionScript,用于Adobe Flash/Flex。
从技术上讲,ECMAScript是每个人都在使用和实现的语言——它是许多年前Netscape和Microsoft坐下来试图在JavaScript (Netscape的脚本语言)和JScript (Microsoft的脚本语言)之间标准化脚本时创建的规范。
随后,所有这些引擎表面上都实现了ECMAScript,然而JavaScript(这个名字)现在因为传统的命名原因而存在,并且作为Mozilla用于各种非标准扩展的营销术语(他们希望能够真正“版本”)。
总称:
JavaScript = ECMAScript + DOM +炸弹;
ECMAScript®语言规范定义了创建和编辑对象、数组、数字等的所有逻辑… DOM(文档对象模型)使得与HTML/XML文档(例如Document . getelementbyid ('id');)通信成为可能。 BOM(浏览器对象模型)是浏览器对象的层次结构(例如位置对象,历史对象,表单元素)。
JavaScript命名的历史:
Mocha►LiveScript►JavaScript(语言)►(JS的一部分结果)►ECMA-262►ECMAScript►JavaScript(总称,由ECMAScript + DOM + BOM组成)
在我的理解中,ECMAScript是“理论”或“规范”,Javascript是“实践”或“实现”。
JavaScript是一种ECMAScript语言。
ECMAScript不一定是JavaScript。
推荐文章
- 如何从javascript子类调用父方法?
- Javascript中Uint8Array的字符串
- 跨浏览器JavaScript(不是jQuery…)滚动到顶部动画
- 如何找到一个值的数组索引?
- 当内部元素滚动位置达到顶部/底部时,防止父元素的滚动?
- Node.js和CPU密集型请求
- val()和text()的区别
- 如何使用Jest测试对象键和值是否相等?
- 将长模板文字行换行为多行,而无需在字符串中创建新行
- 如何在JavaScript中映射/减少/过滤一个集?
- Bower: ENOGIT Git未安装或不在PATH中
- 添加javascript选项选择
- 在Node.js中克隆对象
- 为什么在JavaScript的Date构造函数中month参数的范围从0到11 ?
- 使用JavaScript更改URL参数并指定默认值