一、變數
ECMAscript變數是鬆散型變量,所謂鬆散型變量,就是變數名稱可以保存任何類型的數據,每個變數僅僅是用於保存值的佔位符。
定義:var firstDemo;
二、變數的作用域
2.1基本概念
使用var 定義變數:定義該變數的作用域的局部變量,這種定義變數的方法也被變成明確宣告。
這麼說不理解的話可以看看下面這個簡單粗暴的例子:
由以上兩個例子可以看出,如果在一個函數中使用var 定義一個變量,那麼該變量在函數退出後會被銷毀。
省略var 定義變數:只要呼叫一次定義該變數的函數,全域範圍內都可存取該變數。這種定義變數的方法也被成為隱式宣告
tips:明確宣告的變數在預編譯時就已經編譯到呼叫物件中了,(例如var t=1;預編譯時執行var t;解釋時執行t=1;)不同於隱式宣告變數在解釋時才被定義為全域變數。
弄清楚變量的作用域,可以幫助我們思考如何合理聲明變量,這樣既減小了不必要的內存開銷,同時能很大程度上地避免變量重複定義而覆蓋先前定義的變量所造成的麻煩。
2.2作用域分析
輸出結果:0 1 0
輸出結果:
A、0 0 1 0
B、0 undefined 1 0
C、0 報錯i is not defined
各位可以猜測一下結果是哪一個,原因會在留言裡詳解。
以上就是本文的全部內容了,簡單的說任何程式語言中變數的作用域都是一個很關鍵的細節。 JS中變數的作用域相對與JAVA、C這類語言顯得更自由,一個很大的特徵就是JS變數沒有區塊級作用域,函數中的變數在整個函數中都有效。