[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 的事件機制是什么**]()