面向急性子的程序员的 JavaScript(ES2022 版)
请支持本书:购买捐赠
(广告,请不要屏蔽。)

3 JavaScript 的历史和演变



3.1 JavaScript 的诞生

JavaScript 由 Brendan Eich 于 1995 年 5 月在 10 天内创建。Eich 在 Netscape 工作,并为他们的网络浏览器Netscape Navigator实现了 JavaScript。

当时的想法是用 Java 实现客户端网络的主要交互部分。JavaScript 应该是一种粘合语言,用于连接这些部分,并使 HTML 稍微更具交互性。鉴于其辅助 Java 的作用,JavaScript 必须看起来像 Java。这排除了 Perl、Python、TCL 等现有解决方案。

最初,JavaScript 的名称经过了几次更改

3.2 JavaScript 的标准化

JavaScript 有两个标准

这些标准描述的语言称为ECMAScript,而不是JavaScript。之所以选择不同的名称,是因为 Sun(现在的 Oracle)拥有后者的商标。

该组织的原始名称是ECMA,是欧洲计算机制造商协会的首字母缩写词。后来更名为Ecma 国际(“Ecma”是一个专有名词,而不是首字母缩写词),因为该组织的活动已扩展到欧洲以外。最初的全大写首字母缩写词解释了 ECMAScript 的拼写。

原则上,JavaScript 和 ECMAScript 含义相同。有时会做出以下区分

因此,ECMAScript 6是该语言的一个版本(其第 6 版)。

3.3 ECMAScript 版本时间线

以下是 ECMAScript 版本的简要时间线

3.4 Ecma 技术委员会 39 (TC39)

TC39 是发展 JavaScript 的委员会。严格来说,其成员是公司:Adobe、Apple、Facebook、Google、Microsoft、Mozilla、Opera、Twitter 等。也就是说,通常是激烈竞争对手的公司正在为语言的利益而共同努力。

TC39 每两个月举行一次会议,成员任命的代表和受邀专家参加。这些会议的纪要公开在GitHub 存储库中。

3.5 TC39 流程

在 ECMAScript 6 中,当时使用的发布过程存在两个明显的问题

为了应对这些问题,TC39 制定了新的TC39 流程

结果:更小、增量的版本,其功能已经过现场测试。图 1说明了 TC39 流程。

Figure 1: Each ECMAScript feature proposal goes through stages that are numbered from 0 to 4. Champions are TC39 members that support the authors of a feature. Test 262 is a suite of tests that checks JavaScript engines for compliance with the language specification.

ES2016 是第一个根据 TC39 流程设计的 ECMAScript 版本。

3.5.1 提示:从单个功能和阶段的角度思考,而不是 ECMAScript 版本

直到并包括 ES6,最常见的做法是从 ECMAScript 版本的角度考虑 JavaScript——例如,“此浏览器是否支持 ES6?”

从 ES2016 开始,最好从单个功能的角度考虑:一旦某个功能达到第 4 阶段,您就可以安全地使用它(如果您的目标 JavaScript 引擎支持它)。您不必等到下一个 ECMAScript 版本。

3.6 常见问题解答:TC39 流程

3.6.1 我喜欢的提议功能进展如何?

如果您想知道各种提议功能处于哪些阶段,请参阅GitHub 存储库proposals

3.6.2 是否有 ECMAScript 功能的官方列表?

是的,TC39 存储库列出了已完成的提案,并提到了它们是在哪个 ECMAScript 版本中引入的。

3.7 JavaScript 的演变:不要破坏网络

偶尔会出现的一个想法是通过删除旧功能和怪癖来清理 JavaScript。虽然这个想法的吸引力是显而易见的,但它也有很大的缺点。

假设我们创建了一个不向后兼容的新版本 JavaScript,并修复了它的所有缺陷。结果,我们会遇到以下问题

那么解决方案是什么?我们能否鱼与熊掌兼得?为 ES6 选择的方法称为“一个 JavaScript”

  测验

请参阅测验应用程序