JavaScript 的诞生

97 阅读3分钟
JavaScript 的诞生

JavaScript 的诞生

简介

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。

诞生过程

  1. 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。 这是历史上第一个比较成熟的网络浏览器,轰动一时。 但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。 网景公司急需一种网页脚本语言,使得浏览器可以与网页互动。
  2. 就在这时,发生了另外一件大事:1995年Sun公司将Oak语言改名为Java,正式向市场推出。 Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。
  3. 网景公司动了心,决定与Sun公司结成联盟。它不仅允许Java程序以applet(小程序)的形式,直接在浏览器中运行; 甚至还考虑直接将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过于复杂,后来才不得不放弃。
  4. 1995年4月,网景公司录用了Brendan Eich. Brendan Eich的主要方向和兴趣是函数式编程,网景公司招聘他的目的,是研究将Scheme语言作为网页脚本语言的可能性。 仅仅一个月之后,1995年5月,网景公司做出决策,未来的网页脚本语言必须"看上去与Java足够相似",但是比Java简单,使得非专业的网页作者也能很快上手。 这个决策实际上将Perl、Python、Tcl、Scheme等非面向对象编程的语言都排除在外了。 而Brendan Eich被指定为这种"简化版Java语言"的设计师。
  5. 但是,Brendan Eich对Java一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。 由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。

总的来说,Brendan Eich的设计思路是这样的:
(1)借鉴C语言的基本语法;
  (2)借鉴Java语言的数据类型和内存管理;
  (3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
  (4)借鉴Self语言,使用基于原型(prototype)的继承机制。
所以,Javascript语言实际上是两种语言风格的混合产物----(简化的)函数式编程+(简化的)面向对象编程。 这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。

由于

  1. 设计阶段过于仓促
  2. 没有先例
  3. 过早的标准化
这三个客观原因,导致Javascript的设计不够完善。

Javascript的10个设计缺陷:

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

参考资料:
JavaScript 的历史 (备用链接)
JavaScript 诞生记
JavaScript 的10个设计缺陷