JavaScript、ECMAScript 与历史






4.33/5 (3投票s)
本文主要介绍 JavaScript、ECMAScript、基本术语和发布历史。
引言
作为一名 JavaScript 从业者和学生,过去几年过得非常激动人心,因为出现了许多新特性,而且未来的版本和规范也让事情变得非常有趣。
然而,JavaScript 语言虽然有趣,但其词汇、术语和发布历史却有些复杂。
在本文中,我将带您深入了解这些细节,并追溯一些历史。
历史
JavaScript 由 Brendon Eich 于 1995 年 5 月在 Netscape 工作期间开发。他被要求为 Web 创建一种类似 Java 的语言,但 Eich 决定开发一种易于上手的语言。
最初,它被命名为 Mocha,然后正式更名为 LiveScript。后来,Netscape 与 Sun 合作,并以 JavaScript 的名称发布了它。
几年后,Microsoft Internet Explorer 采用了该语言,并推出了自己的实现 Jscript。
后来,Netscape 决定将该语言交给 Ecma International 来制定标准并指导 JavaScript 的发展方向,因此 ECMAScript 这个名字应运而生。
ECMAScript 在 1997-1999 年间发布了几个版本(ECMAScript 3),之后近十年都没有新的版本发布。当时,Microsoft Internet Explorer 占据主导地位,但在改进语言方面却进展不大,于是 Firefox 和其他一系列浏览器应运而生,焦点重新回到了 ECMAScript。
基本词汇
JavaScript
JavaScript 是一种跨平台、面向对象、强大但轻量级的编程语言。最初,JavaScript 是作为 Web 浏览器的核心开发的,是一种 Web 浏览器能够理解和使用的语言。但如今,它已被广泛应用于各种应用程序,包括移动、桌面、游戏和服务器端开发。
随着各种基于 JavaScript 的框架和库的出现,JavaScript 已成为当今最常用的语言之一。
一门真正的未来语言。
ECMAScript
像 JavaScript (Sun) 和 Jscript (Microsoft) 这样的术语已经被占用,因此在标准化时,选择了“ECMAScript”这个名称,因为相应的标准由 ECMA International 托管。
目前,JavaScript 和 ECMAScript 这两个术语在实际中几乎可以互换使用。通常,当人们提到语言时,会使用 JavaScript 这个词,而当他们提到版本时,则使用 ECMAScript。
ECMA-262
ECMA-262 是 ECMAScript 语言的官方规范。它由 ECMA International 维护。
ECMA 技术委员会 39 (TC39)
开发 ECMA-262 的团队,包括 Eich 和其他人。
ECMAScript 发布历史
ECMAScript 1 和 ECMAScript 2
ECMAScript 的第一个版本,即 ECMAScript 1,于 1997 年 6 月发布。它包含了所有基本内容,例如:
- Types
- 对象
- 运算符
- 函数
- 注释
- 表达式
- 运算符
还有更多。
下一个版本于 1998 年 6 月发布,重点在于标准化规范,并使其完全符合 ISO/IEC 16262 国际标准。
ECMAScript 3
1999 年 12 月,发布了一个新版本,即 ECMAScript 3。这个版本是一个重要的里程碑,因为它得到了所有浏览器的支持。主要亮点包括:
- 正则表达式
- 异常处理 (
try
/catch
) - 更严格的错误定义
ECMAScript 4 (废弃)
ECMAScript 4 被开发为下一个版本,但 TC39 在功能集上未能达成一致。最终,委员会就以下四点达成一致:
引用1. 集中精力与所有各方充分合作开发 ES3.1,并以在明年早些时候实现两个可互操作的实现为目标。
2. 合作进行 ES3.1 之后的下一步工作,这将包括语法扩展,但其语义和语法创新将比 ES4 更为适度。
3. 一些 ES4 的提案已被认定为不适用于 Web,并且已永久排除:包、命名空间和早期绑定。这一结论是 Harmony 的关键。
4. ES4 中的其他目标和想法正在被重新表述,以保持委员会的共识;这包括基于现有 ES3 概念并结合提议的 ES3.1 扩展的类概念。
ECMAScript 5
2009 年 12 月发布的新版本,其功能得到了大多数浏览器的支持。这个版本带来了一些变化,彻底改变了我们看待 JavaScript 的方式,例如严格模式、JSON 支持等。主要亮点包括:
- 严格模式
- JSON 的库支持
- Array 和对象上的各种新方法,如
forEach
、filter
、reduce
、some
等。 - 对象的 Getter 和 Setter
ECMAScript 2015 (ES6)
2015 年 6 月发布的 ES6 或 ECMAScript 2015 新版本,拥有非常广泛的功能、代码标准和语法。尽管到目前为止,大多数浏览器都不支持这些功能中的许多。主要亮点包括:
- 从基于原型的 OOP(面向对象编程)转向基于类的 OOP,引入了一组新的关键字和概念,如 Class、Module、Static 和 getter/setter。
- 块级作用域变量和函数
- 箭头函数
- Promise 的引入
- 国际化和本地化
- Typed Array
- Reflection 和 proxies (元编程)
ECMAScript 2016 (ES7) (开发中)
ES7 (ECMAScript 2016) 的最终功能集最近已确定,似乎是一个小版本更新。新功能包括:
- Array 的 includes 函数
- 指数运算符
ECMAScript 2017 (开发中)
ECMAScript 2017 仍处于非常早期阶段,功能集尚未最终确定。但在 ES6 之后,路线图看起来相当清晰,重点将放在面向对象编程、更好的元编程、SIMD 类型以及在 Array 和对象中引入各种其他函数以及异步编程等方面。