JS语言简史
- JS语言的起源
网景公司在1994年推出第一款商用浏览器网景浏览器。1995年网景公司为了提高用户体验想要在浏览器中加入一门新的语言,用户交互效果。最终决定独立开发一门的新的语言,聘请Brendan Eich来开发这门新的语言。历经10天,新的语言诞生(LiveScript)。当时市场上较为兴起的为java,网景公司了为了蹭热点,宣传新的语言,与java公司达成合作关系,更名为JavaScript。实际上java和javaScript并无任何关系。
- 第一次浏览器大战
网景公司打算在浏览器中加入网络操作系统,影响到微软的利益,引起了微软的注意。1995年微软发布IE浏览器并且对JS进行反编译发布自己的JScript,VBScript。第一次浏览器大战是标注之争。1997年网景公司提交Javascript1.1版本到ECMA(欧洲计算机制造协会)。IE发布并且绑定了微软操作系统,1998年网景公司被逼无奈被收购。ECMA收录了JavaScript,并提交给ISO,经过修改,成为了第一个JS的标准版本,成为ECMAScript,简称ES
- 第二次浏览器大战
V8引擎将JS的执行推向了一个新的台阶
微软发布IE4,IE5,IE6(绑定windows xp),当时浏览器相对来说也比较完善,微软做出了解散浏览器团队的决定。 Brendan Eich成立了Mozilla基金会,并且决定将网景浏览器和javascript开源,很多技术爱好者对网景浏览器进行修补,日积月累,2002年Mozilla发布Firefox浏览器。但由于IE6的地位并未对其产生影响,微软也并未在意。随后谷歌推广Chrome浏览器,苹果推出Safari,ASA公司推广Opera浏览器。chrome浏览器搭载JS执行引擎V8(V8引擎,可以将JS代码直接转换为字节码,理论上,JS代码的执行速度已经接近汇编语言)。于是,JS具备了编写大型应用程序的能力,甚至服务器应用。
Ryan Dahl 当时准备写一个服务端的框架,直接利用了V8完成了该框架,该框架称为 nodejs。
”
- ES标准的发展
ES1,1997年
ES2,1998年
ES3,1999年
ES5,2009年,习惯上,不再区分 javascript (JS) 和 ECMAScript (ES) --> 网景公司倒闭 js 也可以叫做 ES
ES6,2015年,ECMA宣布,从ES6开始,使用年号作为版本号,ES6的真正称呼为:ES2015
ES7,2016年,ES2016
非常重要:ES制定语言标准,不涉及语言的运行环境。正是因为ES避免了运行环境,就让ES有机会在各种环境中执行。ES成为了通用编程语言。 不同的环境都可以用这个语言,比如服务器端,app端,小程序等
“ECMAScript 可以为不同种类的宿主环境提供核心的脚本编程能力,因此核心的脚本语言是与任何特定的宿主环境分开进行规定的... ...” Web 浏览器对于 ECMAScript 来说是一个宿主环境,但它并不是唯一的宿主环境。事实上,还有不计其数的其他各种环境(例如 Nombas 的 ScriptEase,以及 Macromedia 同时用在 Flash 和 Director MX 中的 ActionScript)可以容纳 ECMAScript 实现。
通常,把ES运行的环境称之为,宿主环境
JS语言特性
- 解释型语言
编译型语言:C语言、C++、java语言、C#语言
编译型语言会经过一个翻译的过程,负责翻译的叫做编译器,翻译的结果,叫做编译结果。(列如:将整本书翻译过后再返回编译结果)
优点:执行速度快
缺点:某个编译结果,难以适用于各种环境(跨平台障碍);部署繁琐;(跨平台障碍:把英文翻译成中文,只有中国人能看懂,其他国家看,需要在重新翻译。 部署繁琐:在服务端改代码,需要整个项目全部都改在编译,部署比较繁琐)
解释型语言:js、php
解释型语言没有编译结果(看一句解释一句)
优点:跨平台;部署简单;(部署简单:修改的话只修改某个文件的对应部分,然后在覆盖改文件即可)
缺点:执行速度稍慢
- 弱类型语言
弱类型:存放的数据类型可变。优点:灵活、易上手; 缺点:不严谨
强类型:存放的数据类型不可变。优点:严谨;缺点:不灵活、不易上手
通常,将弱类型的解释型语言,称为脚本语言
”
- 单线程
同步现象:上一件事情没有做完,下一件事情必须等待。(减少了程序执行出错的风险,但是如果前面的文件比较大,那么后面的文件也只能等待,执行会比较慢)
- 异步
提高单线程的执行效率。