一文读懂 JavaScript 和 ECMAScript 的区别

我曾试着在谷歌上检索 “ JAVAScript 和 ECMAScript 之间的区别 。”
最后我在得到的海量的混淆不清又相互矛盾的结果中彻底绝望了:
“ECMAScript 是标准 。”
“JavaScript 是标准 。”
“ECMAScript 是规范 。”
“JavaScript 是 ECMAScript 标准的实现 。”
“ECMAScript 是标准化的 JavaScript 。”
“ECMAScript 是一门语言 。”
“JavaScript 是 ECMAScript 的一个分支 。”
“ECMAScript 是 JavaScript 。”
忍住,别哭 。我强打精神决定做一些痛苦但却有成果的研究 。
这篇文章代表了我目前对 JavaScript 和 ECMAScript 之间差异的理解 。文章适合那些熟悉 JavaScript 但又想更加清楚地了解其与 ECMAScript、web 浏览器、Babel 等是何种关系的人 。你还会额外了解到脚本语言、JavaScript 引擎以及 JavaScript 运行时 。
那么,打起精神来吧 。
JavaScript/ECMAScript 词汇表【一文读懂 JavaScript 和 ECMAScript 的区别】下面是一系列的定义,设计的侧重点在于一致性和清晰性 。定义并非百分比完整 。它们被设计从宏观的的层面对 JavaScript 和 ECMAScript 之间的联系和关系给出了说明 。
闲话少叙,让我们开始吧 。
Ecma International
一个为科学技术制定标准的组织 。

一文读懂 JavaScript 和 ECMAScript 的区别

文章插图
 
为了要举一个“标准”的例子(尽管并非由 Ecma 所发明),可以用我们曾用过的键盘来说明 。是不是大多数的字母以同样的顺序排列,有一个空格键、一个输入键、箭头键,并将数字显示在最上面的一行?这是由于大多数键盘制造商的键盘设计是基于 QWERTY 布局标准的 。
ECMA-262
这是由 Ecma 国际发布的标准 。它包含通用目的的脚本语言的规范 。
一文读懂 JavaScript 和 ECMAScript 的区别

文章插图
 
ECMA-262 是一个类似 QWERTY 的标准,但不同于呈现一个键盘层的规范,它呈现了被称为 ECMAScript 的脚本语言规范 。
可以把 ECMA-262 当做 ECMAScript 的参考数字 。
一文读懂 JavaScript 和 ECMAScript 的区别

文章插图
 
脚本语言
一种专门为在一种存在的实体或系统上操作而设计的编程语言 。
关于如何使编程语言成为脚本语言的常规想法,请考虑命令“walk”、“run” 和 “jump” 。这些操作需要一些东西来驱动,可能是一个人、一条狗或一个视频游戏角色 。如果没有操作员来执行这些命令,“walk”、“run” 和 “jump” 是没有意义的 。这组操作类似于专注于操纵外部实体的脚本语言 。
ECMAScript
The specification defined in ECMA-262 中定义的标准,是用于创建通用目的脚本语言的 。
同义词: ECMAScript 规范
然而ECMA-262是标准的名称,它代表了脚本语言规范ECMAScript 。
ECMAScript提供脚本语言必须遵守的规则、细节和准则,这些才是其被视为兼容ECMAScript的判断标准 。
一文读懂 JavaScript 和 ECMAScript 的区别

文章插图
 
JavaScript
一种通用目的的脚本语言,遵循 ECMAScript 规范 。
它是 ECMAScript 语言的一个分支版本 。
一文读懂 JavaScript 和 ECMAScript 的区别

文章插图
 
 
JavaScript 是我喜欢编程的咖啡味语言(指代 Java 族,译者注) 。ECMAScript 是它所基于的规范 。通过阅读 ECMAScript 规范,你将学会如何创建脚本语言 。通过阅读 JavaScript 文档,你将学习如何使用脚本语言 。
当人们把 JavaScript 称为“ ECMAScript 语言的方言”的时候,他们的意思就像谈论英语、法语或者中国方言时一样 。一种方言从其母语中衍生出大部分的词汇和语法,但偏离得值得保留这些差异 。
JavaScript 实现了多数 ECMA-262 中描述的 ECMAScript 规范,但存在少数差异 。Mozilla 在此概述了 JavaScript 的非 ECMAScript 语言功能:
一文读懂 JavaScript 和 ECMAScript 的区别

文章插图
 
JavaScript 引擎
能够理解和执行 JavaScript 代码的程序或解释器 。
同义词:JavaScript 解释器,JavaScript 的实现
JavaScript 引擎通常可以在 web 浏览器中被发现,包括 Chrome 中的 V8,火狐中的 SpiderMonkey,以及 Edge 中的 Chakra。每款引擎就像是一个用于其应用程序的语言模块,可以让其支持某种 JavaScript 语言的分支 。


推荐阅读