本篇簡單明瞭地說明全域變數和區域變數的差異,並舉一些小例子。
然後就如標題所說,本篇真的會附贈告訴大家 JavaScript 中的未宣告變數( undeclared variable )是什麼東東。
區域變數( local variable )
- 在 function 中宣告
- 只能在宣告的 function 中使用( local scope )
- 不同的 function 中可宣告相同名稱的區域變數
- 在宣告變數 function 結束時,區域變數也就消滅了
全域變數( global variable )
- 在 function 外宣告
- 整個網頁中的 script 包含 function 都可以存取該變數( global scope )
- 同一個網頁中不能宣告相同的全域變數名稱
( 是可以啦,但後宣告的會覆蓋掉之前宣告的 ) - 在網頁關閉時,全域變數消滅
例子:
myHtml.html
<html> <body> <head> <script type="text/javascript" src="myJavascript.js"></script> </head> <input id="btn1" type="button" onclick="outputglobal()" value="按下呼叫 outputglobal()"> <input id="btn2" type="button" onclick="outputlocal()" value="按下呼叫 outputlocal()"> </body> </html>
myJavascript.js
var a=0; function outputglobal() { alert("a="+a); alert("b="+b); } function outputlocal() { var b=0; alert("a="+a); alert("b="+b); }
按下 btn2 時會跳出兩個提示視窗,分別是 a=0 和 b=0,
雖然我們在
outputlocal()
中只宣告和定義變數 b,但 a 是定義在 function 外的全域變數,因此我們仍可以存取其值 0。按下 btn1 時只會跳出一個提示視窗 a=0,
因為 btn1 的
onClick
事件所呼叫的 outputglobal()
中,並未定義變數 b。未宣告變數( undeclared variable )
因為 JavaScript 相對其他程式語言來說,算是比較不嚴謹的語言,因此會有像這種未定義的變數出現。
所謂的"未定義",指的是沒有使用關鍵字
var
來在使用某變數前宣告該變數。如,var mood="happy";//宣告(*註) myName="Coyan";//未宣告就直接用了
而這樣未宣告就直接使用變數
若是在 function 外,其效果等同於宣告為全域變數;
若是在 function 內,其效果等同於宣告為區域變數。
不過良心建議是還是打一下" var " 吧,才三個字母而已啊,這樣程式碼也可以一目了然知道是在宣告變數。
註:為什麼心情很高興呢?因為我今天量體重少了一公斤,哈哈!
2 則留言:
僅有在函式(function)內,透過 var 所宣告的變數才能算是 Local Variable 區域變數,若沒有使用 var 關鍵字宣告,無論是在哪裡宣告的變數,都會屬於 Global Variable 全域變數的範疇,此細節請多多注意避免錯誤。
hash
張貼留言