JS发展史
1. Web发展史
Mosaic(马赛克),是互联网历史上第一个获得普遍使用和能够显示图片的网页浏览器。于1993年问世。
而后,Netscape Navigator, Internet Explorer以及Mozilla firefox等,其早期版本皆以Mosaic为基础而开发。
2. js历史
JavaScript作为Netscape Navigator浏览器的一部分首次出现在1996年。它最初的设计目标是改善网页的用户体验。
起初Javascript被命名为LiveScropt,后因网景公司和Sun公司合作,因市场宣传需要,改名为JavaScript。JavaScript和Java没有任何关系,之所以命名相似只是因为当时的联合宣传需求。
3. 浏览器组成
- Shell部分:指浏览器的外壳,例如菜单,工具栏等。主要是提供给用户界面操作,参数设置等等。它是调用内核来实现各种功能的。
- 内核部分:内核是基于标记语言显示内容的程序或模块。也有一些浏览器并不区分外壳和内核。 从Mozilla将Gecko独立出来后,才有了外壳和内核的明确划分。目前主流的浏览器有IE6、IE8、Mozilla、FireFox、Opera、Safari、Chrome、Netscape等。
内核部分,分为:
- 渲染引擎(语法规则和渲染)
- JS引擎
- 其他模块
谷歌浏览器的优化后JS引擎可以将JS代码直接转化为机械码来执行,进而以速度快而闻名。
4. 主流浏览器:(内核)
- IE: Trident
- Firefox: Gecko
- Chrome: Webkit(以前和苹果合作时用的内核)/Blink(现在的内核)
- Safari: Webkit
- Opera: Presto(以前)/Blink(现在的内核)
5. JS的逼格
5.1 解释型语言
(不需要编译成文件)跨平台
关于编译型语言和解释型语言:
- 有的编程语言要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序(Windows 下的 .exe),比如C语言、C++、Golang、Pascal(Delphi)、汇编等,这种编程语言称为编译型语言,使用的转换工具称为编译器。
- 有的编程语言可以一边执行一边转换,需要哪些源代码就转换哪些源代码,不会生成可执行程序,比如 Python、JavaScript、PHP、Shell、MATLAB 等,这种编程语言称为解释型语言,使用的转换工具称为解释器。
- java由于JVM虚拟机的存在,不能单纯的将java划分到编译型或解释型语言
.java -> javac -> 编译 -> .class -> jvm -> 解释执行
编译型语言和解释型语言的优点和不足:
-
编译型语言
优点:快
不足:移植性不好(不可跨平台) -
解释型语言
优点:跨平台
不足:稍慢
5.2 单线程
js引擎是单线程的
5.3 ECMA标注
为了统一规格,JavaScript兼容ECMA标准,因此也称为ECMAScript.
现在的JS被认为由ES、BOM、DOM三大部分组成,其中ES是JS原生的部分,浏览器提供的是BOM和DOM
6. JS执行队列
JS引擎是单线程的,是通过 “轮转时间片” 来模拟多线程的。
轮转时间片:短时间内轮流执行多个任务的片段。
将多任务切片,再随机组合成执行队列,执行后由于视觉残差而造成多任务同时执行的错觉。