浏览器内核
- IE — trident
- Chrome — webkit blink
- Safari — webkit
- firefox — gecko
- opera — presto
浏览器的发展史
编程语言
- 编译型
源码 -> 编译器 -> 机器语言 -> 可执行文件
有跨平台的问题 - 解释型
源码 -> 解释器 -> 解释一行执行一行
不需要根据不同的系统平台进行移植
脚本语言
脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,只在被调用时进行解释或编译
- 客户端脚本:如JavaScript
- 服务端脚本:如PHP
脚本引擎
脚本引擎,就是一个计算机编程语言的解释器,如用于建网站的asp、php等,它的功能是解释执行用户的程序文本,将它译成计算机能执行的机器代码,完成一系列的功能。
JS引擎:JavaScript引擎是一个专门处理JavaScript脚本的虚拟机,一般会附带在网页浏览器之中。
ECMAScript
ECMA:European Computer Manufactures Association(欧洲计算机制造商学会),用来评估、开发、认可电信和计算机标准
ECMA-262:脚本语言规范 ECMAScript
JavaScript
JavaScript三个组成部分
ECMAScript
DOM :document Object model
BOM :browser Object model
JavaScript在浏览其中执行需要一个脚本引擎来解释代码的含义:JS引擎
为什么JavaScript是单线程的呢?
JavaScript 的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript 的主要用途是与用户互动,以及操作 DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScript 同时有两个线程,一个线程在某个 DOM 节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?也就是说浏览器不能限制子线程的行为,所以它必须是单线程的。
JavaScript是单线程的如何执行异步程序代码呢?
JS引擎通过轮转时间片算法来实现异步
- 将任务一,任务二,任务三…切片
- 将切分的任务随机排列,放入队列中
- 按照这个队列的顺序,将任务送入JS线程
- JS线程按照时间片执行任务
JavaScript语法
引用JS脚本
1
2
3
4
5
6
7
8
9<script type="text/javascript">
js代码..
</script>
<script src="/js文件" type="text/javascript"></script>
<!-- 利用type属性编写模板 -->
<script type="text/tpl">
</script>变量
基本数据类型
- Number
- String
- Boolean
- undefined
- null
- Symbol
- 基本数据类型与内存执行上述代码后内存中会发生什么?
1
2
3var a = 1;
var b = a;
a = 3;
引用数据类型
- 常用:object,array,function,date,RegExp
1
2
3var arr = [1,2,3];
var arr2 = arr;
arr = [1,2];执行上述代码后内存中会发生什么?