---
# System prepended metadata

title: 範圍鍊 (Scope Chain)
tags: [JavaScript - 執行環境、作用域]

---

###### tags: `JavaScript - 執行環境、作用域`

# 範圍鍊 (Scope Chain)

JavaScript是屬於語法作用域 (lexical scope)，所以範圍鍊的決定是依照作用域來尋找，跟執行環境與執行堆疊沒有關係。

如果是動態作用域，尋找方式就會依照調用時才決定尋找，也就會變成跟執行環境與執行堆疊有關系。

```javascript=
var d = 'd';

function funcA() {
    var a = 'a';
    
    function funcB() {
        console.log(a);

        function funcC() {
            console.log(d);
        };
        
        funcC();
    };
    
    funcB();
};

funcA();
```

```javascript=
var d = 'd';
var a = 'aa';

function funcA() {
    var a = 'a';
    funcB();
};

function funcB() {
    console.log(a); // aa

    function funcC() {
        var d = 'dd';
        console.log(d); // dd
    };
        
    funcC();
};

funcA();
```