背景

1993年,计算机组织 NCSA 发表了 NCSA Mosaic ,这是最早流行的图形接口网页浏览器,它在万维网的普及上发挥了重要作用。

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

选择

网景公司当时有两个选择:一个是采用现有的语言,比如 PerlPythonTclScheme 等等,允许它们直接嵌入网页;另一个是发明一种全新的语言。

这时候 Sun 公司推出了Java 语言, 并且很快在时长获得好评. 网景决定与 Sun 公司合作, 考虑将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过于复杂,后来才不得不放弃。

1995年5月,网景公司做出决策,指定程序员 Brendan Eich 来设计一门新语言用在他们的浏览器上 , 而且要求这个网页脚本语言必须”看上去与Java足够相似”,但是比Java简单,使得非专业的网页作者也能很快上手。

戏剧性

Brendan Eic 却对 Java 一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。 由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。总的来说,他的设计思路是这样的:

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

所以,Javascript 语言实际上是两种语言风格的混合产物——(简化的)函数式编程+(简化的)面向对象编程。这是由 Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。

Javascript 的十个设计缺陷

  1. 不适合开发大型程序
  2. 非常小的标准库
  3. null和undefined
  4. 全局变量难以控制
  5. 自动插入行尾分号
  6. 加号运算符
  7. NAN
  8. 数组和对象的区分
  9. == 和 ===
  10. 基本类型的包装对象