关于JavaScript的“题外话”

123 阅读3分钟

1、设计初衷

1994,网景公司发布了Navigator浏览器0.9版,这是世界上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力,公司急需一种网络脚本语言,使得浏览器可以与网页进行互动。

1995年Sun公司将Oak语言改名为Java,正式向市场推出。

网景公司动了心,决定与Sun公司结成联盟。1995年5月,网景公司做出决策,未来的网页脚本语言必须"看上去与Java足够相似",但是比Java简单,使得非专业的网页作者也能很快上手。 这个决策实际上将Perl、Python、Tcl、Scheme等非面向对象编程的语言都排除在外了。

Brendan Eich被指定为这种"简化版Java语言"的设计师。他觉得,没必要设计得很复杂,这种语言只要能够完成一些简单操作就够了,并且,他对Java一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把JavaScript设计出来了。

由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,JavaScript写出来的程序混乱不堪。

2、设计思路

总的来说,JavaScript的设计思路如下:

  1. 借鉴C语言的基本语法;
  2. 借鉴Java语言的数据类型和内存管理;
  3. 借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
  4. 借鉴Self语言,使用基于原型(prototype)的继承机制。

虽然JavaScript的名字与Java很接近,但是其设计思想更多的来自于Scheme和Self 语言

3、JavaScript缺陷产生的原因

JavaScript设计不够严谨,主要在于以下几个客观原因:

  • 设计阶段比较仓促 只花了十天进行设计,并且,当时也只是想用来做些简单的交互。
  • 没有先例 Javascript同时结合了函数式编程和面向对象编程的特点,这很可能是历史上的第一例。而且直到今天为止,Javascript仍然是世界上唯一使用Prototype继承模型的主要语言。这使得它没有设计先例可以参考。
  • 过早地制定标准 1995年5月,设计方案定稿;10月,解释器开发成功;12月,向市场推出,立刻被广泛接受,全世界的用户大量使用。Javascript缺乏一个从小到大、慢慢积累用户的过程,而是连续的爆炸式扩散增长。大量的既成网页和业余网页设计者的参与,使得调整语言规格困难重重。

更糟的是,Javascript的规格还没来及调整,就固化了。

1996年8月,微软公司强势介入,宣布推出自己的脚本语言Jscript;11月,为了压制微软,网景公司决定申请Javascript的国际标准;1997年6月,第一个国际标准ECMA-262正式颁布。

也就是说,Javascript推出一年半之后,国际标准就问世了。设计缺陷还没有充分暴露就成了标准。相比之下,C语言问世将近20年之后,国际标准才颁布。

参考文章:
JavaScript的10个设计缺陷
JavaScript 诞生记