[TOC]
## Reflect
## 线程和进程
[**什么是线程和进程?**]()
## 并发与并行
[**什么是并发与并行?**]()
## 同步与异步
[**什么是同步与异步?**]()
* 同步 会阻塞当前程序执行 一直等到结果后才会向下执行
* 异步就是等待结果的同时可以先去作别的 然后在处理结果
[**同步任务和异步任务的执行顺序?**]()
1. 先执行同步任务,异步任务首先到Event Table进行回调函数注册、
2. 当异步任务的触发条件满足时,将回调函数从Event Table 压入Event Queue中、
3. 主线程里面的同步任务执行完毕,系统回去Event Queue 中读取异步的回调函数,
4. 只要主线程执行完了就去Event Queue 读取回调函数 。这个过程也叫Event Loop
## Event Loop
[**宏任务和微任务有哪些?(都是异步任务)**]()
* 宏任务
~~~jsx
script
定时器
Ajax
History traversal // h5当中的历史操作
I/O
~~~
* 微任务
~~~jsx
Promise.then
process.nextTick // nodejs中的一个异步操作
MutationObserve // h5里面增加的,用来监听DOM节点变化的
Object.observe
async/await
~~~
[**Event Loop 执行过程**]()
1. 代码开始执行,创建一个全局调用栈,script作为宏任务执行
2. 执行过程过同步任务立即执行,异步任务根据异步任务类型分别注册到微任务队列和宏任务队列
3. 同步任务执行完毕,查看微任务队列
4. 若存在微任务,将微任务队列全部执行(包括执行微任务过程中产生的新微任务)
5. 若无微任务,查看宏任务队列,执行第一个宏任务,宏任务执行完毕,查看微任务队列,重复上述操作,直至宏任务队列为空
## 事件流和事件委托
[**什么是事件流**]()
事件流分为三个阶段
* 捕获阶段
* 目标阶段
* 冒泡阶段
IE事件流:事件冒泡流
标准浏览器事件流: 事件捕获流
[**什么是事件委托**]()
利用的事件冒泡
2. 有什么优缺点
* 优点
~~~jsx
1. 减少事件注册 节省内存
2. 新增子项时 不需要在进行事件绑定
~~~
* 缺点
~~~jsx
1. 可能会事件误判,就是本不该被触发的事件被绑定上了事件
~~~
[**DOM0级事件和DOM2级事件的区别**]()
* DOM 把事件写在标签内的是DOM0
* 通过addEventListener、addEvents(IE)绑定的事件
* DOM3级事件 鼠标/键盘事件/UI事件
[**Vue和React 的事件机制是什么**]()