“Any application that can be written in JavaScript, will eventually be written in JavaScript.” “任何可以用JavaScript编写的应用,最终都会用JavaScript来编写。” — Jeff Atwood, Author, Entrepreneur, Cofounder of StackOverflow

JavaScript 的诞生

从浏览器的诞生说起

  • 蒂姆·伯纳斯·李 爵士(Sir Timothy John Berners-Lee)是浏览器的发明者,我们称呼他为李爵士(2004年,英国女皇伊丽莎白二世向他颁发大英帝国爵级司令勋章)。

giphy(1).gif

  • 1989年3月,工作在瑞士的欧洲核子研究中心(CERN)的李爵士向他的老板递交了一份提议。他的老板在这份提议上批复了几个字“难以捉摸却令人兴奋!”。这也象征着互联网时代的开始。

Proposal.gif

  • 1990年圣诞节🎄那一天,世界上第一个浏览器诞生了,它的名字叫做WorldWideWeb

giphy(2).gif

  • WorldWideWeb运行在NeXT机器上,它的界面长这个样子👇🏻,它既是一个浏览器,又是一个编辑器。

WorldWideWeb_FSF_GNU.png

  • 但是WorldWideWeb并没有普及开来,早起普及的浏览器中最有名气的还当属由美国伊利诺伊大学的国家超级电脑应用中心(NCSA)开发的Mosaic giphy(3).gif

**

  • 开发Mosaic的团队领导人马克·安德森后来离开了NCSA,并与另外几人共同创办了Mosaic通信公司,后来更名为网景公司(Netscape),并推出了一个全新的浏览器——网景导航者Netscape Navigatorgiphy(5).gif

  • JavaScript 诞生的故事也是从网景公司开始的。

JavaScript 呱呱落地

  • 网景公司预见到网络需要更强的交互性,马克·安德森认为需要增加一种胶水语言,使开发者更容易组装一些图片和插件等组件。于是JavaScript应运而生。

giphy(9).gif

  • JavaScript的设计者是Brendan Eich。

Brendan Eich.gif

  • Brendan Eich用 10天时间设计出了JavaScript的原型。对,没错,就是 10天。再说一遍,10天

giphy(10).gif

JavaScript 的命名

  • 最初的JavaScript还不叫这个名字,而是叫做Mocha mocha.png,之所以起一个跟咖啡有关的名字是为了蹭Java的热度(Java也是咖啡的一种)。

giphy(11).gif

  • 在 Netscape Navigator 2.0 beta 中改名为 LiveScript LiveScript.png
  • 在 Netscape Navigator 2.0 beta3 中更名为 JavaScript JavaScript.png


giphy(13).gif

实际上JavaScript和Java真的关系不大,就好像“植物”和“植物人”一样。

**

JavaScript 借鉴了哪些语言

  • 屏幕快照 2020-03-12 下午5.12.54.png 借鉴了C语言的基本语法
  • image.png 借鉴了Java语言的数据类型内存管理
  • image.png 借鉴了Scheme语言,将函数提升到“第一等公民”的地位;
  • image.png 借鉴了Lisp语言的动态类型
  • self.png 借鉴了Self语言,使用基于原型的继承机制

giphy(6).gif
—- 一个《星球大战》梗 —-

JavaScript的进化

JavaScript的进化与浏览器的发展是分不开的。

【插播】网景与微软的恩恩怨怨

Netscape Navigator 还是 Internet Explorer
  • 就在网景的浏览器如日中天时,微软推出了自家的浏览器 Internet Explorer,也就是臭名昭著IE浏览器
  • IE浏览器与Windows捆绑销售,用微软的话来说,任何购买了Windows的用户都可以免费使用IE。

giphy(14).gif

  • 1996年微软推出了JScript,和IE3捆绑发行,同JavaScript构成了竞争关系。IE3率先支持了CSS。

第一次浏览器大战

giphy(21).gif

  • 第一次浏览器大战爆发,IE使用各种手段打击网景,再加上网景的一系列错误决策,IE逐渐占了上风。
  • 最终IE大获全胜,网景公司被美国在线(AOL)并购。
  • 1998年3月31日,在源码开放许可证的安排下,网景公布了Netscape Navigator的大部分源代码,这个项目使用了Mozilla这个名字,这也为后来发生的事情埋下了伏笔。

giphy(4).gif

关于这段恩怨给网景公司带来的影响,可以参见纪录片:代码奔腾(2000)

JavaScript标准化之路

  • 网景虽然倒了,但JavaScript却愈发展现出了它的生机与活力。

走上标准化之路
  • 1996年,JavaScript开始走上了规范化之路。
  • 1996年11月,网景公司决定将JavaScript提交给国际标准化组织ECMA,希望这种语言能成为国际标准。

ES1
  • 1997年6月,ECMA-262规范第一版发布,规范制定者是ECMA组织下一个名为TC39的技术委员会。
  • 为了体现这门语言的开放性和中立性,这门语言的标准便以ECMAScript的名字被写入ECMA-262规范。
  • 简单来讲,ECMAScript是JavaScript的标准,JavaScript是ECMAScript的实现

ES2
  • 1998年6月,ECMAScript发布第二版。

ES3
  • 1999年发布的ECMAScript第三版加入了很多优美的特性,例如正则表达式等。

ES4
  • 第四版的草案在2000左右就被提出,但各方对于ECMAScript应该向哪个方向发展意见不一,导致ES4流产。

giphy(20).gif

  • 关于ES4的故事十分复杂,可以看看尤雨溪和贺师俊的总结:ES6会重蹈ES4的覆辙吗? - 知乎
  • 其中一个人物非常关键,就是JavaScript语言精粹的作者 Douglas Crockford。他不希望JavaScript变得繁杂失去控制,微软赞同他的观点,而微软恰好主导着市场。这导致一些新特性没有被引入ES4,ES4宣告流产。
  • 谷歌、微软和雅虎最终决定先做一个小版本更新,也就是ES3.1。

ES5
  • 2009年发布了第五版。
  • ES5新增了JSON支持等。

ES6
  • 2015年6月发布ECMAScript第六版,这是最“现代”的一个版本。
  • ES6提供了各种新特性,可以参见阮一峰的ES6入门教程
  • 之后ECMAScript开启年更模式。所以ES6 === ES2015

JavaScript展望未来

推荐几篇文章:

写在最后

  • 来前儿的火车票谁给报了。

giphy(18).gif

本人才疏学浅,如有错误,还望批评指正。