背景
1993年,计算机组织 NCSA 发表了 NCSA Mosaic ,这是最早流行的图形接口网页浏览器,它在万维网的普及上发挥了重要作用。
1994年,网景公司(Netscape)发布了 Navigator 浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。
选择
网景公司当时有两个选择:一个是采用现有的语言,比如 Perl、Python、Tcl、Scheme 等等,允许它们直接嵌入网页;另一个是发明一种全新的语言。
这时候 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 的十个设计缺陷
- 不适合开发大型程序
- 非常小的标准库
- null和undefined
- 全局变量难以控制
- 自动插入行尾分号
- 加号运算符
- NAN
- 数组和对象的区分
- == 和 ===
- 基本类型的包装对象
