JavaScript诞生

JavaScript诞生教程

JavaScript 诞生于1995 年。起初它的主要目的是处理以前由服务器端负责的一些表单验证。

在那个绝大多数用户都在使用调制解调器上网的时代,用户填写完一个表单点击提交,需要等待几十秒,完了服务器反馈给你说某个地方填错了…在当时如果能在客户端完成一些基本的验证绝对是令人兴奋的。

当时走在技术革新最前沿的 Netscape(网景)公司,决定着手开发一种客户端语言,用来处理这种装简单的验证。当时就职于 Netscape 公司的布兰登·艾奇开始着手计划将 1995 年 2 月发布的 LiveScript 同时在浏览器和服务器中使用。

为了赶在发布日期前完成 LiveScript 的开发,Netscape 与 Sun 公司成立了一个开发联盟。而此时,Netscape 为了搭上媒体热炒 Java 的顺风车,临时把 LiveScript 改名为 JavaScript,所以从本质上来说 JavaScript 和 Java 没什么关系。

JavaScript发展

JavaScript 1.0 获得了巨大的成功,Netscape 随后在 Netscape Navigator 3(网景浏览器)中发布了 JavaScript 1.1。之后作为竞争对手的微软在自家的 IE3 中加入了名为 JScript(名称不同是为了避免侵权)的 JavaScript 实现。

而此时市面上意味着有 3 个不同的 JavaScript 版本,IE 的 JScript、网景的 JavaScript 和 ScriptEase 中的 CEnvi。当时还没有标准规定 JavaScript 的语法和特性。随着版本不同暴露的问题日益加剧,JavaScript 的规范化最终被提上日程。

1997年,以 JavaScript 1.1 为蓝本的建议被提交给了欧洲计算机制造商协会(ECMA,European Computer Manufactures Association)该协会指定 39 号技术委员会负责将其进行标准化。

TC39 来此各大公司以及其他关注脚本语言发展的公司的程序员组成,经过数月的努力完成了 ECMA-262——定义了一种名为 ECMAScript 的新脚本语言的标准。第二年,ISO/IEC(国标标准化组织和国际电工委员会)也采用了ECMAScript 作为标准(即 ISO/IEC-16262)。

JavaScript的组成

虽然 JavaScript 和 ECMAScript 通常被人用来表达相同的意思,但 JavaScript 的含义去比 ECMA-262 中规定的多得多。一个完整的 JavaScript 实现应由三个部分组成:

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

ECMAScript

由 ECMA-262 定义的 ECMAScript 其实与 Web 浏览器没有依赖关系。Web 浏览器只是 ECMAScript 实现可能的宿主环境之一。

ECMA-262 定义的只这门语言的基础,而在此基础上可能构建更完善的脚本语言。说回宿主,它不仅提供基本的JavaScript 的实现,同时也会提供该语言的扩展,比如 DOM。其他宿主环境还包括 Node 和 Adobe Flash。

ECMA-262 标准主要规定了这门语言的以下组成部分:语法、类型、语句、关键字、保留字、操作符和对象。

ECMAScript的版本

ECAMScript 的不同版本又称为版次,ECMA-262 最近一版是第 5 版,发布于 2009 年。ECAM-262 的第 1 版实质上与 Netscape 的 JavaScript 1.1 相同,只不过做了些小改动:支持 Unicode 标准,对象与平台无关。

ECMA-262 第 2 版主要是编辑加工的结果,没有作任何新增、修改或删节处理。

ECMA-262 第 3 版才是对该标准第一次真正的修改。修改内容包括字符串处理、错误定义和数值输出。这一版还新增了对正则表达式、新控制语句、try-catch 异常处理的支持,并围绕标准的国际化做出了一些小的修改。第 3 版也标志着 ECMAScript 成为了一门真正的编程语言。

ECMA-262 第 4 版对这门语言进行了一次全面的检核修订。由于 JavaScript 在 Web 上日益流行。开发人员纷纷建议修订 ECMAScript,以使其能够满足不断增长的 Web 开发需求。

ECMA TC39 重新召集相关人员共同谋划,结果,出台后的标准几乎是在第 3 版的基础上完全定义了一门新语言。第 4 版不仅包含了强类型变量、新语句和新的数据结构、真正的类和经典继承。还定义了与数据交互的新方式。

此时,TC39 下属的一个小组认为第 4 版给这门语言带来的跨越太大了,他们提出了 ECMAScript 3.1 的替代性建议,该建议只对这门语言进行了较少的改进。最终,ES3.1 附属委员会获得的支持超过了 TC39,ECMA-262 第 4 版在正式发布前被放弃。

ECMAScript 3.1 最终成为 ECMA-262 第 5 版,并于 2009 年 12 月 3 日正式发布。第 5 版力求澄清第 3 版中已知的歧义并添加了新的功能,包括原生 JSON 对象、继承的方法和高级属性定义,以及严格模式。