#### 1. 理解詞法作用域和動態作用域
1. 作用域:就是一套規則,用于確定在何處以及如何查找變量的規則
2. 詞法作用域:也就是靜態作用域,JS采用的是詞法作用域,函數的作用域在函數定義的時候就決定了
3. 動態作用域:函數的作用域是在調用的時候確定的
4. 案例:因為JS是采用詞法作用域,所以foo函數在定義的時候已經確定了,value // 1
```
var value = 1;
function foo() {
console.log(value);
}
function bar() {
var value = 2;
foo();
}
bar();
```
#### 2. 理解JavaScript的作用域和作用域鏈
1. 作用域:JS中分為全局、局部、塊級(ES6+)三個作用域
2. 作用域最大的作用就是隔離變量,不同作用域下的同名變量不會有沖突
3. 作用域鏈:變量在查找過程中,由最近的作用域一直查找到頂層作用域,所形成的鏈為作用域鏈
#### 3. 理解JavaScript的執行上下文棧,可以應用堆棧信息快速定位問題
1.
#### 4. this的原理以及幾種不同使用場景的取值
1. this的取值取決于函數的四種調用方式
1. 函數直接調用:this指向window
2. 函數由對象調用:this指向所有的對象
3. 函數由call apply bind調用,顯示更改指向:this指向傳入的對象,也就是第一個參數
4. 函數由new創建構造函數:this指向新創建的實例對象
#### 5. 閉包的實現原理和作用,可以列舉幾個開發中閉包的實際應用
1.
#### 6. 理解堆棧溢出和內存泄露的原理 ,如何防止
1. 堆棧溢出:當程序運行需要的內存超過了系統所分配的內存時,就會拋出內存溢出的錯誤
2. 內存泄露:
1. 內存泄露積累過多就容易造成內存溢出
2. 占用的內存沒有及時釋放
3. 開發中常見的內存泄露 1. 閉包 2. 占用內存很大的全局變量 3. 沒有及時清理的計時器/定時器
#### 7. 如何處理循環的異步操作
1.
#### 8. 理解模塊化解決的實際問題,可列舉幾個模塊化方案并理解其中原理
1.