Javascript的黑历史
谈JS的黑历史就像冬天里吃火锅,贼爽 ——无名氏
学习一门语言的第一步就是了解其的历史,而大多数编程书上又对该语言的历史着墨不多,或者又都是正面的描述导致我们对语言历史感受不到什么认同感
所以了解JS的历史尤其是黑历史在我看来就是十分有趣的做法!
JavaScript 因为互联网而生,紧跟着浏览器的出现而问世。回顾它的历史,就要从浏览器的历史讲起。
1991 WWW
1992 CSS
1993 W3C建立
1994
网景 Netscape 推出 Netscape Navigator(网景导航者)市场份额一举超过90%
Netscape 公司很快发现,Navigator 浏览器需要一种可以嵌入网页的脚本语言,用来控制浏览器行为
管理层对这种浏览器脚本语言的设想是:功能不需要太强,语法较为简单,容易学习和部署,所以Netscape 公司雇佣了程序员 Brendan Eich 开发这种网页脚本语言。Brendan Eich 有很强的函数式编程背景,希望以 Scheme 语言(函数式语言鼻祖 LISP 语言的一种方言)为蓝本,实现这种新语言。但是那一年,正逢 Sun 公司的 Java 语言问世,市场推广活动非常成功。Netscape 公司决定与 Sun 公司合作,推出一种看起来像Java的语言。
所以Brendan Eich就从表面上改写了语言实现了var obj = new Object() 这种Java写法,而且当时设想只用了10天所以有很多地方都存在缺陷,这也导致了JS有些怪异的运行结果
语言的名字也因为和Sun的合作一改再改,从 Macha(抹茶)到LiveScript到Javascript(一种很像Java的Script)
1995 Unicode,UTF-8发布,这导致了JS从出生就采用了落后的编码方式
1996 微软发布了IE浏览器并推出JScript功能和Javascript基本完全相同
- 网景因为和微软的竞争失败而推出了开源的浏览器Firefox(火狐)并成立Monzilla委员会想借此来对抗微软的一家独霸
- 网景向ECMA(Ecma国际,前身为欧洲计算机制造商协会)提交了申报JavaScript为标准,来对抗微软的新特性推出从而出现了ECMAScript
微软推出IE5.5且内置JS请求功能(Ajax)
2004 谷歌推出Gmail应用,标志着JS“复杂程序”的实现,从而Javascript才开始抛弃”玩具语言“的称号
- JS——编程语言
- 前端出现(以JS为生的人)
值得注意的是前端大多都是由后端程序员而转来的(并且没有传统意义上的科班前端)
2004年以后——
2007年,Douglas Crockford 发表了名为《JavaScript: The good parts》的演讲,次年由 O'Reilly 出版社出版。这标志着软件行业开始严肃对待 JavaScript 语言,对它的语法开始重新认识,正因为这样慢慢人们发现Javascript的不行之处
- 全局变量的大量使用(没有模块化)
- 标准库的内置代码完全不够
这些对Javascript的认识导致了ECMA委员会对其的升级
ECMAScript3 核心的JS代码
ECMAScript4 由于升级太多,导致浏览器不支持从而死了,还有标准组织ECMA技术委员会(Technical Committee 39)成员在下一代JavaScript语言上存在分歧
ECMAScript5 吸收了4的经验而只升级了部分,然而这样又导致了大部分人觉得JS升级太少太慢
Rails社区(Ruby)——推出了CoffeeScript,在其中添加了许多新特性比如类和选择链(position chain)可以把它看完JS的升级
ECMAScript6 ECMA看CoffeeScript的标准提出被广大开发者接受,从而推出了ECMAScript6版本添加了CoffeeScript的一些特性,也可以说是抄袭
而且是慢慢抄,免得步子太大
正是由于JavaScript的这种发展历史而导致JS吸收了各家所长正式成为了现代编程语言
JS之父Brendan Eich才发出感叹
JS原创之处并不优秀,优秀之处并非原创
最后ECMA每年一更(定期更新)当然每一年推出的特性也不会太多
ES 7
ES 8
ES Next Webpack
(不支持)(变成支持)
ESNext为还没有推出的特性,这是JS使用的特点,把还没有发展为标准的JS特性都给使用起来
当微软发展出了一个新特性并使用,Firefox也会使用,IE也会使用,从而ECMA会收入其标准
而非浏览器都支持时就是用Babel转义为浏览器可以使用的
关键点: 浏览器的出现导致了JS的出现,而基于Ajax的Gmail开发导致JS成为编程语言,ECMA标准的不断更新又使JS正式成为现代编程语言
(写于2019年2月16日)
参考资料:
浙公网安备 33010602011771号