###### tags: `JavaScript - 執行環境、作用域` # 語法作用域(Lexical scope) 講到作用域有分為兩種 : 1. 靜態作用域(lexical scope),變數的作用域解析時就已經確定,且不會再改變 2. 動態作用域(dynamic scope),變數的作用域再呼叫、調用函式時才決定 JavaScript屬於靜態作用域,在語法單元化(Tokenizing)、解析時就已經決定作用域 ![](https://i.imgur.com/YqSgyhB.png) 下面範例 : 如果是靜態作用域會輸出 outer ,動態作用域則是 inner。 ```javascript= var b = 'outer'; function funcA() { console.log(b); }; function funcB() { var b = 'inner'; funcA(); }; funcB(); // outer ```