JavaScript作用域個人理解

說起作用域,這世界上的編程語言中有兩種工作模型。一種是最爲普遍的詞法作用域,絕大多數的編程語言都使用該模型。另一種是動態作用域,比如Bash腳本中就使用動態作用域。而我們的JavaScript毫不例外的,用了詞法作用域。

詞法作用域

簡單的說,詞法作用域就是定義在詞法階段的作用域。通俗的講,你寫JS時相應的決定作用域的代碼寫在了哪兒,作用域就在哪兒誕生且一般不會改變。就比如你寫了一函數,就會產生一個函數作用域,函數中定義的變量只在函數中生效。
JS的作用域普遍來講分爲兩類:**函數作用域**和**塊級作用域**

函數作用域

函數是JavaScript中最常見的作用域單元。本質上,聲明在一個函數內部的變量或函數會在所處的作用域中隱藏起來,這是有意爲之的良好軟件設計原則。
    一般來說,對於一名初學者,函數作用域就是他的全部了。

塊級作用域

塊級作用域可能是JavaScript被其他語言的擁躉們詬病的一點。從ES3開始才存在塊級作用域。而且是try/catch結構中catch分句出現的塊級作用域。
這明顯遠遠不夠。直到ES6,出現了萬衆矚目的let關鍵字:用以在任意代碼塊中聲明變量。
除了let之外,ES6還引入了const,同樣可以創建塊級作用域。其值爲固定的常量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章