JavaScript 由 Brendan Eich 于 1995 年 5 月创建,为期 10 天。 Eich 在 Netscape 工作并为他们的网络浏览器 Netscape Navigator 实现了 JavaScript。
这个想法是 Web 客户端的主要交互部分将用 Java 实现。 JavaScript 应该是这些部分的粘合语言,并且还使 HTML 更具交互性。鉴于它在协助 Java 方面的作用,JavaScript 必须看起来像 Java。这排除了现有的解决方案,如 Perl,Python,TCL 等。
最初,JavaScript 的名称改变了几次:
JavaScript 有两个标准:
这些标准描述的语言称为 ECMAScript ,而不是 JavaScript 。选择了另一个名称,因为 Sun(现在的 Oracle)拥有后者名称的商标。“ECMAScript”中的“ECMA”来自主持主要标准的组织。
该组织的原始名称是 ECMA ,_ 欧洲计算机制造商协会 _ 的首字母缩写。后来改为 Ecma International (“Ecma”是一个专有名称,而不是缩写),因为该组织的活动已经扩展到欧洲以外。最初的全帽首字母缩略词解释了 ECMAScript 的拼写。
原则上,JavaScript 和 ECMAScript 意味着相同的事情。有时,会做出以下区分:
因此, ECMAScript 6 是该语言的一个版本(其第 6 版)。
这是 ECMAScript 版本的简要时间表:
TC39 是发展 JavaScript 的委员会。严格来说,它的成员是公司:Adobe,Apple,Facebook,Google,Microsoft,Mozilla,Opera,Twitter 等。也就是说,通常是激烈竞争对手的公司正在为了语言的利益而共同努力。
每两个月,TC39 会议由成员任命的代表和受邀专家参加。这些会议的会议记录是公开的,在 GitHub 存储库中。
使用 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 版本。
有关 TC39 过程的更多信息,请参阅“探索 ES2018 和 ES2019”。
在 ES6 之前,最常见的是根据 ECMAScript 版本来考虑 JavaScript。例如:“这个浏览器是否支持 ES6?”
从 ES2016 开始,最好考虑单个功能:一旦功能到达第 4 阶段,您就可以安全地使用它(如果它受到您所定位的 JavaScript 引擎的支持)。您不必等到下一个 ECMAScript 发布。
如果您想了解各种提议功能的各个阶段,请参考 GitHub 存储库proposals
。
是的,TC39 回购列出了完成的提案,并提到了它们被引入的 ECMAScript 版本。
偶尔出现的一个想法是通过删除旧功能和怪癖来清理 JavaScript。虽然这个想法的吸引力是显而易见的,但它有明显的缺点。
让我们假设我们创建了一个不向后兼容的 JavaScript 新版本并修复了它的所有缺陷。结果,我们遇到了以下问题:
那么解决方案是什么?我们可以吃蛋糕吗?为 ES6 选择的方法称为“One JavaScript”:
let
声明变量 - 这是var
的改进版本。yield
只是生成器内部的关键字(在 ES6 中引入)。模块和类中的所有代码(都在 ES6 中引入)隐式处于严格模式。有关 One JavaScript 的更多信息,请参阅“探索 ES6”。
参见测验应用程序。