ECMAScript和JavaScript的区别是什么?根据我的推断,ECMAScript是标准,JavaScript是实现。这对吗?
Javascript是它最初的名字,意在利用java的流行。ECMA是监督最终实施的标准的标准机构,因此名称大致相同。
实现还有其他名字,比如V8或者Rhino等等。
各种JavaScript版本都是ECMAScript标准的实现。
如果不是因为“JavaScript”这个名字属于Sun,我怀疑我们永远不会使用“ECMAScript”这个词。无论如何,这种语言都是JavaScript。你不会去书店找ECMAScript的书吧?
说“JavaScript”就是实现有点太简单了。JScript是微软的实现。
JavaScript 是一个 ECMAScript语言。
ECMAScript 不一定 JavaScript。
从技术上讲,ECMAScript是每个人都在使用和实现的语言——它是许多年前Netscape和Microsoft坐下来试图在JavaScript (Netscape的脚本语言)和JScript (Microsoft的脚本语言)之间标准化脚本时创建的规范。
随后,所有这些引擎表面上都实现了ECMAScript,然而JavaScript(这个名字)现在因为传统的命名原因而存在,并且作为Mozilla用于各种非标准扩展的营销术语(他们希望能够真正“版本”)。
JavaScript是围绕ECMAScript标准形成的语言的一个分支。我相信ECMA是欧洲计算机制造商协会,并不是说这是真正相关的。
不要忘记另一种围绕ECMA Script标准形成的流行语言是ActionScript,用于Adobe Flash/Flex。
ECMAScript是语言,而JavaScript, JScript,甚至ActionScript 3被称为“方言”。维基百科说明了这一点。
我知道这是一个老帖子,但希望这能帮助到一些人。
Wrox(面向Web开发人员的专业Javascript)
在我的理解中,ECMAScript是“理论”或“规范”,Javascript是“实践”或“实现”。
现有的答案很好地解释了要点。
主要的一点是ECMAScript是一种纯粹的抽象语言,没有任何特定领域的扩展,它本身是无用的。规范只定义了语言和它的核心对象。
而JavaScript和ActionScript以及其他方言则为其添加了特定于领域的库,因此您可以将其用于有意义的事情。
有许多ECMAScript引擎,其中一些是开源的,另一些是专有的。你可以将它们链接到你的程序中,然后将你的本机函数添加到全局对象中,这样你的程序就可以脚本化了。尽管它们通常在浏览器中使用。
JavaScript = ECMAScript + DOM + 物料清单;
ECMAScript®语言规范定义了创建和编辑对象、数组、数字等的所有逻辑…
DOM (Document Object M模型)使得与HTML/XML文档(例如document.getElementById('id');)通信成为可能。
document.getElementById('id');
BOM (Browser Object M模型)是浏览器对象(例如位置对象、历史对象、表单元素)的层次结构。
JavaScript命名的历史:
Mocha►LiveScript►JavaScript►(部分JS结果)ECMA-262►ECMAScript►JavaScript(由ECMAScript + DOM + BOM组成)
我觉得该上一堂历史课了。
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)
ECMAScript = ES:
ECMAScript是脚本语言的标准。
像Javascript这样的语言是基于ECMAScript标准的。
ECMA标准基于几种原始技术,最著名的是JavaScript (Netscape)和JScript (Microsoft)。
ECMA的意思是欧洲计算机制造商协会
JavaScript = JS:
JavaScript是ECMAScript标准最流行的实现。
ActionScript和JScript是实现ECMAScript的其他语言。
JavaScript被提交给ECMA进行标准化,但由于JavaScript名称的商标问题,标准被称为ECMAScript。
每个浏览器都有一个JavaScript解释器。
ES5 = ECMAScript
ES5是ECMAScript的一个版本(旧版本/当前版本)。
ES5是你现在所知道并在浏览器中使用的JavaScript。
ES5不需要构建步骤(编译器)来将其转换为可以在当前浏览器中运行的内容。
ECMAScript第五版于2009年12月完成, 所有主要浏览器(Chrome、Safari、Firefox和IE)的最新版本 已经实现了版本5。李< / p > < / >
5.1版于2011年6月完成。
ES6 = ES2015 = ECMAScript 2015:
ES2015是ECMAScript(新/未来版本)的一个版本。
官方名称应该是ES2015,而不是ES6。
ES6将解决在 TypeScript和CoffeeScript.
ES6是JavaScript的下一个迭代,但它不能在今天的浏览器中运行。
有相当多的编译器将导出ES5以便在浏览器中运行。
BabelJS:
BabelJS是最流行的将新的JavaScript ES6转换为旧的JavaScript ES5的编译器。
BabelJS使得今天编写下一代JavaScript成为可能(意味着ES2015)。
BabelJS只是将ES2015文件转换为ES5文件。
当前的浏览器版本现在可以理解新的JavaScript代码(ES2015),即使它们还不支持它。
TypeScript和CoffeeScript:
两者都在ES5之上提供语法糖 然后被编译成兼容ES5的JavaScript。李< / p > < / >
你编写TypeScript或CoffeeScript,然后转译器将其转换为ES5 JavaScript。
ECMAScript是JavaScript的标准,看看中数的这些声明:
JavaScript (JS)是一个轻量级解释型或jit编译型 具有一流函数的编程语言。虽然它是最 作为Web页面的脚本语言而闻名,许多非浏览器 环境也使用它,如node.js, Apache CouchDB和Adobe 杂技演员。JavaScript是基于原型的、多范式的、动态的 语言,支持面向对象、命令式和声明式 (例如函数式编程)风格。
JavaScript的标准是ECMAScript。截至2012年,都是现代的 浏览器完全支持ECMAScript 5.1。旧浏览器至少支持 ECMAScript 3。2015年6月17日,ECMA国际发布了第六届 ECMAScript的主要版本,正式名称为ECMAScript 2015年,最初被称为ECMAScript 6或ES6。自 然后,ECMAScript标准每年发布一次。这 文档指的是最新的草案版本 ECMAScript 2018。< / p >
欲了解更多信息,请访问在这里
以下是我的发现:
JavaScript:权威指南,作者David Flanagan给出了非常简洁的解释:
JavaScript是Netscape在Web早期创建的 从技术上讲,“JavaScript”是Sun授权的商标 Microsystems(现在的甲骨文)用来描述Netscape(现在的Mozilla)的Microsystems(现在的甲骨文) 语言的实现。网景公司提交的语言 ECMA的标准化和由于商标问题 该语言的标准化版本被这个尴尬的名字困住了 “ECMAScript”。出于同样的商标原因,微软的 该语言的正式名称为“JScript”。实际上,差不多
微软的博客似乎同意弗拉纳根的解释。
ECMAScript是JavaScript语言的官方名称
.. 这让我认为在这参考帖子中出现的JavaScript(再次由微软发布)必须由ECMASCript取代。实际上,他们似乎很谨慎地只在这中使用ECMAScript,这是一个更近、更有技术含量的文档页面。
JavaScript
ECMASCript
ECMAScript
w3schools.com似乎与上面的定义一致:
JavaScript由Brendan Eich在1995年发明,并成为ECMA 1997年的标准。ECMA-262是该标准的正式名称。 . ECMAScript是该语言的官方名称
这里的关键是:语言的正式名称。
如果你选择Mozilla的JavaScript版本页面,你会遇到下面的语句:
< p >弃用。语言的显式版本控制和选择 这些特性是mozilla特有的,正在被删除。 Firefox 4是最后一个使用JavaScript的版本 于(1.8.5)。有了新的ECMA标准,JavaScript语言的特性现在就有了 在ECMA-262版本中经常提到它们的初始定义 例如ECMAScript 2015.
当你看到最近的发布说明时,你总是会看到对ECMAScript标准的引用,比如:
ES2015标志。toStringTag属性已经实现(bug 1114580)。 ES2015 TypedArray.prototype.toString( TypedArray.prototype.toLocaleString()方法已经实现 (错误1121938). < / p > < /李>
ES2015标志。toStringTag属性已经实现(bug 1114580)。
ES2015 TypedArray.prototype.toString( TypedArray.prototype.toLocaleString()方法已经实现 (错误1121938). < / p > < /李>
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。< / p >
他们似乎交替使用JavaScript和ECMAScript这个词,我想说它实际上是一个ECMAScript引擎?
因此,大多数JavaScript引擎实际上都实现了ECMAScript标准,但它们不称自己为ECMAScript引擎,而是称自己为JavaScript引擎。这的答案也支持了我对这种情况的看法。