ECMAScript 和 JavaScript 有什么区别?根据我的推断,ECMAScript 是标准,JavaScript 是实现。这个对吗?
16 回答
我认为应该上一点历史课。
JavaScript 最初被命名为 Mocha,后来改为 Livescript,但最终变成了 JavaScript。
重要的是要注意 JavaScript 出现在 ECMAscript 之前,历史会告诉你原因。
一开始,JavaScript 的名字来源于 Java,最初 Brendan Eich(JS 的创建者)被要求为 Netscape 开发一种类似于 Java 的语言。
然而,Eich 认为 Java 的所有规则都过于复杂,因此着手创建一种更简单的语言,即使是初学者也可以编写代码。这在诸如放宽对分号的需求之类的事情中很明显。
该语言完成后,Netscape 的营销团队要求 Sun 允许他们将其命名为 JavaScript 作为营销噱头,因此大多数从未使用过 JavaScript 的人认为它与 Java 有关。
JavaScript 在浏览器中发布大约一两年后,微软的 IE 采用了这种语言并开始制作自己的实现,例如 JScript。与此同时,IE 在市场上占据主导地位,不久之后 Netscape 不得不关闭其项目。
在 Netscape 倒闭之前,他们决定启动一个标准来指导 JavaScript 的发展,名为 ECMAScript。
ECMAScript 有几个版本,在 1999 年他们发布了他们的最后一个版本(ECMAScript 3),然后它们进入休眠状态 10 年。在这 10 年里,微软占据了主导地位,但同时他们并没有改进他们的产品,因此 Firefox 诞生了(由 Eich 领导)和一大堆其他浏览器,如 Chrome、Opera。
ECMAScript 于 2009 年发布了它的第 5 版(第 4 版被废弃),具有严格模式等功能。从那时起,ECMAScript 获得了很大的动力,并计划在几个月后发布其第 6 版,这是迄今为止最大的变化。
您可以在此处http://kangax.github.io/es5-compat-table/es6/使用 ECMAScript 6 的功能列表以及浏览器支持。您甚至可以像使用 CoffeeScript 一样开始编写 Ecmascript 6,并使用编译器编译成 Ecmascript 5。
ECMAScript 是语言还是 JavaScript 是方言是有争议的,但并不重要。如果你继续这样想,你可能会感到困惑。没有编译器可以运行 ECMAScript,我相信 JavaScript 被认为是实现称为 ECMAScript 标准的语言。
还有其他值得注意的语言实现了 ECMAScript,例如 ActionScript(用于 Flash)
ECMAScript 是语言,而 JavaScript、JScript 甚至 ActionScript 3 被称为“方言”。维基百科对此有所了解。
ECMAScript = ES:
ECMAScript 是脚本语言的标准。
Javascript 等语言基于 ECMAScript 标准。
ECMA 标准基于多种原始技术,最著名的是 JavaScript (Netscape) 和 JScript (Microsoft)。
ECMA 是指欧洲计算机制造商协会
JavaScript = JS:
JavaScript 是 ECMAScript 标准最流行的实现。
Javascript 的核心功能基于 ECMAScript 标准,但 Javascript 还具有其他不在 ECMA 规范/标准中的附加功能。
ActionScript 和 JScript 是实现 ECMAScript 的其他语言。
JavaScript 已提交给 ECMA 进行标准化,但由于名称 Javascript 的商标问题,该标准被称为 ECMAScript。
每个浏览器都有一个 JavaScript 解释器。
ES5 = ECMAScript 5:
ES5 是 ECMAScript 的一个版本(旧/当前版本)。
ES5 是您今天在浏览器中了解和使用的 JavaScript。
ES5 不需要构建步骤(转译器)将其转换为可以在当今浏览器中运行的东西。
ECMAScript 版本 5 于 2009 年 12 月完成,所有主流浏览器(Chrome、Safari、Firefox 和 IE)的最新版本都实现了版本 5。
5.1 版于 2011 年 6 月完成。
ES6 = ECMAScript 6 = ES2015 = ECMAScript 2015:
ES2015 是 ECMAScript 的一个版本(新的/未来的版本)。
正式名称应该使用 ES2015 而不是 ES6。
ES6 将解决 TypeScript 和 CoffeeScript 中解决的许多核心语言缺陷。
ES6 是 JavaScript 的下一次迭代,但它不能在当今的浏览器中运行。
有很多转译器会导出 ES5 以在浏览器中运行。
巴别塔:
BabelJS 是将新的 JavaScript ES6 转换为旧的 JavaScript ES5 的最流行的转译器。
BabelJS 使今天编写下一代 JavaScript(即 ES2015)成为可能。
BabelJS 简单地将 ES2015 文件转换为 ES5 文件。
当前的浏览器版本现在可以理解新的 JavaScript 代码 (ES2015),即使它们还不支持它。
TypeScript 和 CoffeeScript:
两者都在 ES5 之上提供语法糖,然后被转编译成 ES5 兼容的 JavaScript。
您编写 TypeScript 或 CoffeeScript,然后转译器将其转换为 ES5 JavaScript。
JavaScript = ECMAScript + DOM + BOM;
ECMAScript® 语言规范定义了用于创建和编辑对象、数组、数字等的所有逻辑......
DOM(文档对象模型)使得与 HTML/XML 文档(例如 )进行通信成为可能
document.getElementById('id');
。BOM(B rowser Object M模型)是浏览器对象的层次结构(例如位置对象、历史对象、表单元素)。
JavaScript 命名的历史:
Mocha ► LiveScript ► JavaScript ►(部分 JS 产生)ECMA-262 ► ECMAScript ► JavaScript(由 ECMAScript + DOM + BOM 组成)
从技术上讲,ECMAScript 是每个人都在使用和实现的语言——它是多年前 Netscape 和 Microsoft 坐下来尝试标准化 JavaScript(Netscape 的脚本语言)和 JScript(Microsoft 的)之间的脚本时创建的规范。
随后,所有这些引擎表面上都在实现 ECMAScript,但是 JavaScript(名称)现在由于传统命名原因以及 Mozilla 对其各种非标准扩展的营销术语(他们希望能够真正“版本” )
什么是 ECMAScript 即 ES?
ECMAScript 是脚本语言的标准,Javascript 语言基于 ECMAScript 标准。
Javascript 与 ECMAScript 完全一样吗?
- 不,Javascript 并不完全等同于 ECMAScript。
- Javascript 的核心功能基于 ECMAScript 标准,但 Javascript 还具有其他不在 ECMA 规范/标准中的附加功能。
JavaScript = ECMAScript + DOM API;
DOM API 像:document.getElementById('id');
其他语言是否使用 ECMAScript 标准?
- 是的,除了 JavaScript 之外,还有其他语言也将 ECMAScript 标准作为其核心。
- ActionScript(由 Adobe Flash 使用)和 JScript(由 Microsoft 使用)都是实现 ECMAScript 标准的语言。
为什么叫 ECMAScript?
- Javascript 最初是在 Netscape 创建的,他们希望将语言标准化。因此,他们将该语言提交给欧洲计算机制造商协会( ECMA )进行标准化。
- 但是,Javascript 的名称存在商标问题,该标准被称为 ECMAScript,这也是它今天的名称。
- 由于商标问题,微软的语言版本被称为 JScript——尽管 JScript 的核心是与 Javascript 相同的语言。
各种 JavaScript 版本都是 ECMAScript 标准的实现。
在我的理解中,ECMAScript 是“理论”或“规范”,而 Javascript 是“实践”或“实现”。
我知道这是一个旧帖子,但希望这会对某人有所帮助。
在 1990 年代不同版本的 js 开始出现,例如 netscape 的 javascript,Microsoft 的 Js script。因此 ecmascript 作为标准被引入。但是 ecmascript 只是 javascript 的一部分,它指定了它的核心语法、类型、对象等。这可能解释了 javascript 跨 diff 的不一致实现。浏览器
参考 - Wrox(面向 Web 开发人员的专业 Javascript)
JavaScript是一种ECMAScript 语言。
ECMAScript不一定是JavaScript。
现有的答案很好地解释了要点。
要点是 ECMAScript 是一种纯粹的抽象语言,没有任何特定领域的扩展,它本身是无用的。规范只定义了语言和它的核心对象。
虽然 JavaScript 和 ActionScript 以及其他方言将特定领域的库添加到其中,但您可以将其用于有意义的事情。
有许多ECMAScript 引擎,其中一些是开源的,另一些是专有的。您可以将它们链接到您的程序中,然后将您的本机函数添加到全局对象中,这样您的程序就可以编写脚本了。尽管它们最常用于浏览器。
Javascript 是最初的名称,旨在利用 java 的流行。ECMA 是监督最终实施的标准的标准机构,因此名称大致相同。
实现有其他名称,如 V8 或 Rhino 等。
ECMAScript是JavaScrip t 的标准,请查看MDN中的这些语句:
JavaScript
JavaScript (JS)是一种轻量级的解释型或 JIT 编译型编程语言,具有一流的功能。虽然它是最著名的网页脚本语言,但许多非浏览器环境也使用它,例如 node.js、Apache CouchDB 和 Adobe Acrobat。JavaScript 是一种基于原型的、多范式的动态语言,支持面向对象、命令式和声明式(例如函数式编程)风格。阅读有关 JavaScript 的更多信息。
ECMAScript
JavaScript 的标准是ECMAScript。截至 2012 年,所有现代浏览器都完全支持 ECMAScript 5.1。旧版浏览器至少支持 ECMAScript 3。2015 年 6 月 17 日,ECMA International 发布了 ECMAScript 的第六个主要版本,正式名称为 ECMAScript 2015,最初称为 ECMAScript 6 或 ES6。从那时起,ECMAScript 标准每年发布一次。本文档引用了最新的草稿版本,目前是 ECMAScript 2018。
欲了解更多信息,请访问此处
以下是我的发现:
由 David Flanagan 编写的JavaScript: The Definitive Guide提供了非常简洁的解释:
JavaScript 是在 Web 早期由 Netscape 创建的,从技术上讲,“JavaScript”是 Sun Microsystems(现为 Oracle)许可的商标,用于描述 Netscape(现为 Mozilla)对该语言的实现。Netscape 将该语言提交给 ECMA 进行标准化,但由于商标问题,该语言的标准化版本被困在了尴尬的名称“ECMAScript”上。出于同样的商标原因,微软的语言版本正式称为“JScript”。实际上,几乎每个人都将语言称为 JavaScript。
微软的一篇博文似乎同意弗拉纳根所说的解释。
ECMAScript 是我们都知道和喜爱的 JavaScript 语言的正式名称。
..这让我认为这篇JavaScript
参考文章中所有出现的(再次由微软)都必须替换为. 他们实际上似乎很小心只在这个、更新和更多技术文档页面中使用。ECMASCript
ECMAScript
w3schools.com似乎同意上述定义:
JavaScript 由 Brendan Eich 于 1995 年发明,并于 1997 年成为 ECMA 标准。ECMA-262 是该标准的正式名称。ECMAScript 是该语言的正式名称。
这里的关键是:语言的正式名称。
如果你查看Mozilla 的 JavaScript 版本页面,你会遇到如下语句:
已弃用。语言功能的明确版本控制和选择加入是 Mozilla 特有的,并且正在被删除。Firefox 4 是最后一个引用 JavaScript 版本 (1.8.5) 的版本。随着新的 ECMA 标准,JavaScript 语言功能现在经常在 ECMA-262 版本(例如 ECMAScript 2015)中以其初始定义被提及。
当您查看最近的发行说明时,您将始终看到对 ECMAScript 标准的引用,例如:
已实现 ES2015 Symbol.toStringTag 属性(错误 1114580)。
ES2015 TypedArray.prototype.toString() 和 TypedArray.prototype.toLocaleString() 方法已经实现(bug 1121938)。
Mozilla Web Docs 还有一个页面解释了 ECMAScript 和 JavaScript 之间的区别:
但是,在 Web 浏览器上下文中理解的总称“JavaScript”包含几个非常不同的元素。其中一个是核心语言(ECMAScript),另一个是 Web API 的集合,包括 DOM(文档对象模型)。
结论
据我了解,人们使用 JavaScript 一词来指代核心的 ECMAScript 规范有些宽泛。
我想说,所有现代 JavaScript 实现(或 JavaScript 引擎)实际上都是 ECMAScript 实现。查看 Google 对V8 引擎的定义,例如:
V8 是 Google 的开源高性能 JavaScript 引擎,用 C++ 编写并用于 Google Chrome(Google 的开源浏览器)和 Node.js 等。它实现了 ECMA-262 中指定的 ECMAScript。
他们似乎可以互换使用 JavaScript 和 ECMAScript 这个词,我会说它实际上是一个 ECMAScript 引擎?
因此,大多数 JavaScript 引擎实际上都在实现 ECMAScript 标准,但它们不称它们为 ECMAScript 引擎,而是称自己为 JavaScript 引擎。这个答案也支持我看待情况的方式。
如果不是因为“JavaScript”这个名字归 Sun 拥有,我怀疑我们是否会使用“ECMAScript”这个词。出于所有意图和目的,该语言是 JavaScript。您不会去书店寻找 ECMAScript 书籍,是吗?
说“JavaScript”是实现有点太简单了。JScript 是微软的实现。
JavaScript 是围绕 ECMAScript 标准形成的语言分支之一。我相信 ECMA 是欧洲计算机制造商协会,并不是说这真的相关或任何东西。
不要忘记围绕 ECMA 脚本标准形成的另一种流行语言是用于 Adobe Flash/Flex 的 ActionScript。