JavaScript 作用域
JavaScript是採用語法作用域,屬於靜態作用域的,靜態作用域是變數的作用域在語法解析的時候,就已經確定它的作用域了,確定完就無法再改變。
如果作用域裡找不到變數的時候,就會向外查找,找不到的時候就會報錯(not define)。
1 | let value = 1 |
以上方為例,num1 找 value 時會往外層全域尋找,但是有一點非常的重要,就是它尋找的時候不會跟執行環境有任何的關聯性,因為JavaScript是語法作用域,在程式碼撰寫的時候就已經確定了它的作用域。num2 裡面的 value 作用域就只有在 num2 的函式裡面,所以不會影響到外面全域變數的 value 。
但是如果把 num2 變成下面這樣
1 | let value = 1 |
那 num2 的 value 就會影響到外面的變數,所以顯示就會變成 2。