ECMAScript和JavaScript的区别是什么?根据我的推断,ECMAScript是标准,JavaScript是实现。这对吗?
当前回答
ECMAScript是JavaScript的标准,看看MDN中的这些语句:
JavaScript
JavaScript (JS)是一种轻量级的解释或jit编译的 具有一流函数的编程语言。虽然它是最 作为Web页面的脚本语言而闻名,许多非浏览器 环境也使用它,如node.js, Apache CouchDB和Adobe 杂技演员。JavaScript是基于原型的、多范式的、动态的 语言,支持面向对象、命令式和声明式 (例如函数式编程)风格。阅读更多关于JavaScript的内容。
ECMAScript
The standard for JavaScript is ECMAScript. As of 2012, all modern browsers fully support ECMAScript 5.1. Older browsers support at least ECMAScript 3. On June 17, 2015, ECMA International published the sixth major version of ECMAScript, which is officially called ECMAScript 2015, and was initially referred to as ECMAScript 6 or ES6. Since then, ECMAScript standards are on yearly release cycles. This documentation refers to the latest draft version, which is currently ECMAScript 2018.
欲了解更多信息,请访问这里
其他回答
以下是我的发现:
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”这个名字属于Sun,我怀疑我们永远不会使用“ECMAScript”这个词。无论如何,这种语言都是JavaScript。你不会去书店找ECMAScript的书吧?
说“JavaScript”就是实现有点太简单了。JScript是微软的实现。
JavaScript是围绕ECMAScript标准形成的语言的一个分支。我相信ECMA是欧洲计算机制造商协会,并不是说这是真正相关的。
不要忘记另一种围绕ECMA Script标准形成的流行语言是ActionScript,用于Adobe Flash/Flex。
ECMAScript是JavaScript的标准,看看MDN中的这些语句:
JavaScript
JavaScript (JS)是一种轻量级的解释或jit编译的 具有一流函数的编程语言。虽然它是最 作为Web页面的脚本语言而闻名,许多非浏览器 环境也使用它,如node.js, Apache CouchDB和Adobe 杂技演员。JavaScript是基于原型的、多范式的、动态的 语言,支持面向对象、命令式和声明式 (例如函数式编程)风格。阅读更多关于JavaScript的内容。
ECMAScript
The standard for JavaScript is ECMAScript. As of 2012, all modern browsers fully support ECMAScript 5.1. Older browsers support at least ECMAScript 3. On June 17, 2015, ECMA International published the sixth major version of ECMAScript, which is officially called ECMAScript 2015, and was initially referred to as ECMAScript 6 or ES6. Since then, ECMAScript standards are on yearly release cycles. This documentation refers to the latest draft version, which is currently ECMAScript 2018.
欲了解更多信息,请访问这里
我觉得该上一堂历史课了。
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)
推荐文章
- 如何在Typescript中解析JSON字符串
- Javascript reduce()在对象
- 在angularJS中& vs @和=的区别是什么
- 错误"Uncaught SyntaxError:意外的标记与JSON.parse"
- JavaScript中的querySelector和querySelectorAll vs getElementsByClassName和getElementById
- 给一个数字加上st, nd, rd和th(序数)后缀
- 如何以编程方式触发引导模式?
- setTimeout带引号和不带括号的区别
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 用javascript检查输入字符串中是否包含数字
- 如何使用JavaScript分割逗号分隔字符串?
- 在Javascript中~~(“双波浪号”)做什么?
- 谷歌chrome扩展::console.log()从后台页面?
- 未捕获的SyntaxError:
- [].slice的解释。调用javascript?