JavaScript系列文章-『Javascript的變數基本』

摘要:JavaScript系列文章-『Javascript的變數基本』


1. ------ Javascript宣告變數


 

宣告變數,就是所謂的定義變數,Javascript解譯器在執行程式碼之前,會先對這些已宣告的變數名建立索引表(值未建立)

這樣當程式執行中檢索變數時就非常快,以此提高程式的執行效率,這過程也被稱為『Javascript的預編譯處理』。

 

變數宣告的方法。

 

但這裡有幾個Javascript的變數陋習要注意一下。

 

A.變數沒有型別。

Javascript是個弱型語言,變數沒有型別,嚴格來說是變數的記憶體位址自已沒有類型,如果給變數賦予值後,又再一次賦予其它類型的值,則變數的類型又會發生變化。

 

B.變數可以重複宣告。

Javascript如果有相同的變數名稱,前面的都會被之後的覆蓋掉。

 

C.變數可以隱式宣告。

當使用者不宣告變數而直接為變數給予值時(如 a=1),Javascript不會提示錯誤,而會直接視為全域變數進行處理。

 

其中有點要注意,不宣告變數而直接給予值時,該變數在預編程處理時,不會存入所索引表裡,因此上面程式碼如果將

函數呼叫拿掉的話則會發生語法錯誤,找不到變數a ,不是因為他不是全域變數,而是它根本還沒有定義,只有執行函數時才會被定義。

 
 

2. ------ Javascript變數的作用域


 

所謂的作用域就是變數在程式中可供存取的有效範例,嚴格來說C#的public 、private 就是定義作用域的關鍵字。

在Javascript中變數的作用域可以分為全域與局部。

 

  • 全域變數的作用域是全域性的,即在整個Javascript程式中到處都可以存取全域變數。

  • 區域變數的作用域是局部的,僅能夠在宣告的函數內部存取。

 

局部變量與全局變量的優先等級。

以函數內部來說,局部變量的優先等級高於全局變量。

 
 
 
3. ------ Javascript變數的作用域鏈

 

所謂的作用域鏈為當Javscript要查詢一個變數X時,會先在第一個作用域上尋找,如果沒有則往上尋找。以此類推。

下面簡單寫個程式碼。來解釋一下。

 

首先Javascript會先在test1函數尋找x變數,發現沒有,往上一層test函數尋找,還是沒有,最後在最外層尋找,才找到。

 

下面的程式碼,在呼叫f函數時,裡面會呼叫echo函數,Javascript在echo中尋找變數 a ,尋找不到因此至外面一層尋找到變數 a 值為1。 

 

如果將程式碼改寫為將echo函數寫在f 函數內,則執行結果為 2 。

 

 

 

 



小弟才書學淺~請各位客官指教指教~~~

小弟日 : 你要知道自已不是帥哥,你才有可能變成帥哥 。