作用域

冰凉小手發表於2024-03-10

作用域是什麼?

作用域

作用域是根據名稱查詢變數的一套規則,作用域是在執行時程式碼中的某些特定部分中變數,函式的可訪問性。換句話說,作用域決定了程式碼區塊中變數和其他資源的可見性。

作用域鏈

作用域鏈指的是作用域與作用域之間形成的鏈條。當我們查詢一個當前作用域沒有定義的變數(自由變數)的時候,就會向上一層作用域尋找,直到找到該變數,或抵達到全域性作用域為止。

詞法作用域和動態作用域

作用域共有兩種主要的工作模式。第一種是最為普遍的,被大多數程式語言所採用的詞法作用域,另一種叫做動態作用域,如 Bash 指令碼。

詞法作用域

詞法作用域是一套引擎如何尋找變數以及會在何處找到變數的規則。詞法作用域最重要的特徵是它的定義過程發生在程式碼的書寫階段(假設你沒有使用 eval 或 with),即你寫好後你的作用域就定了

JavaScript 並不具有動態作用域。它只有詞法作用域,簡單明瞭,但是 this 機制某種程度上很像動態作用域

主要區別:詞法作用域是在寫程式碼或者說宣告時確定的,而動態作用域是在執行時確定的(this 也是!)

詞法作用域關注函式在何處宣告,而動態作用域關注函式從何處呼叫

相關文章