javaScript 作用域
在MDN或者其他權威教程上,對於作用域的解釋無一例外是與可見性和生命週期相關。
作為最重要的概念之一,初學者往往會惑於上述高大上的理論闡述。
所以從淺顯處入手,可能更有助於對於概念的入門和深入理解。
作用域通俗的講就是變數或者函式的“勢力範圍”,在此範圍內,變數可以被引用,函式可以被呼叫。
JavaScript具有兩種作用域:
(1).全域性作用域。
(2).函式作用域。
特別說明:ES2015新增塊級作用域,具體可以參閱JavaScript 塊級作用域一章節。
函式中宣告的變數是區域性變數,當然必須使用var宣告,否則也是一個全域性變數,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼function func(){ var webName="螞蟻部落"; address="青島市南區"; }
兩個變數雖然都是在函式中宣告,但webName是區域性變數,address是全域性變數。
全域性變數在整個程式碼中都是可見的,區域性變數僅能在宣告變數的函式(包括巢狀在其中的函式)中使用。
再來看一段程式碼:
[JavaScript] 純文字檢視 複製程式碼function func(){ var webName="螞蟻部落"; function funcInner(){ var target="分享互助"; } }
變數webName可以在函式func和funcInner中應用,但變數target只能夠在funcInner中使用。
全域性變數是window物件的屬性,"勢力範圍"是整個程式碼。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼var antzone="分享互助"; function func(){ var webName="螞蟻部落"; } console.log(window.antzone);
作用域鏈:
作用域鏈是查詢一個變數的時候,一層一層的向上形成的查詢軌跡,類似於一個鏈子一樣。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼var antzone="螞蟻部落"; function box(){ var a="box函式"; function middle(){ var b="middle函式"; function inner(){ console.log(antzone); } inner(); } middle(); } box();
將要列印antzone時,首先會在當前inner函式作用域中查詢,沒有找到,則向上在middle函式作用域中查詢,沒有查詢到,再向上在box中查詢。依然沒有查詢到,最後在全域性作用域中查詢,這樣就形成作用域鏈效果。
更多關於作用域鏈內容可以參閱JavaScript作用域連結一章節。
相關文章
- JavaScript 作用域 與 作用域鏈JavaScript
- JavaScript作用域JavaScript
- javascript之作用域與作用域鏈JavaScript
- 理解 JavaScript 作用域JavaScript
- javascript作用域鏈JavaScript
- 深入理解JavaScript作用域和作用域鏈JavaScript
- 學習JavaScript作用域JavaScript
- javascript 詞法作用域JavaScript
- JavaScript 塊級作用域JavaScript
- JavaScript之作用域鏈JavaScript
- JavaScript深度理解——作用域JavaScript
- 圖解javascript作用域圖解JavaScript
- 淺談JavaScript作用域JavaScript
- javascript作用域總結JavaScript
- javascript作用域鏈理解JavaScript
- JavaScript作用域詳解JavaScript
- JavaScript中的作用域JavaScript
- javascript作用域和作用域鏈簡單介紹JavaScript
- 深入理解javascript系列(六):作用域與作用域鏈JavaScript
- JavaScript 深入之詞法作用域和動態作用域JavaScript
- 深入理解JavaScript作用域JavaScript
- 徹底搞懂JavaScript作用域JavaScript
- JavaScript高階特性 — 作用域JavaScript
- 理解 JavaScript 中的作用域JavaScript
- 談談 JavaScript 的作用域JavaScript
- JavaScript深入之作用域鏈JavaScript
- JavaScript 深入之作用域鏈JavaScript
- Javascript解析之作用域理解JavaScript
- 理解JavaScript的作用域鏈JavaScript
- Javascript-this/作用域/閉包JavaScript
- 深入理解javascript作用域系列第二篇——詞法作用域和動態作用域JavaScript
- 深入理解 Javascript 之 作用域JavaScript
- 淺淺淺談JavaScript作用域JavaScript
- (譯)理解javascript中的作用域JavaScript
- JavaScript中變數和作用域JavaScript變數
- JavaScript之作用域和閉包JavaScript
- JavaScript之變數及作用域JavaScript變數
- javascript沒有塊級作用域JavaScript