JavaScript 變量作用域
■知識(shí)點(diǎn)
變量作用域(scope)是指變量在程序中可以訪問(wèn)的有效范圍,也稱為變量的可見(jiàn)性。JavaScript變量可以分為全局變量和局部變量。
全局變量:變量在整個(gè)頁(yè)面腳本中都是可見(jiàn)的,可以被自由訪問(wèn)。
局部變量:變量?jī)H能在聲明的函數(shù)內(nèi)部可見(jiàn),函數(shù)外是不允許訪問(wèn)的。
■實(shí)例設(shè)計(jì)
下面的示例演示了全局變量和局部變量的關(guān)系。
var a = 1; //聲明并初始化全局變量
function f () { //聲明函數(shù)
document.write (a); //顯示undefined
var a = 2; //聲明并初始化局部變量
document.write(a); //顯示2
}
f(); //調(diào)用函數(shù)
由于在函數(shù)內(nèi)部聲明了一個(gè)同名局部變量a,所以在預(yù)編譯期,JavaScript使用該變量覆蓋掉全局變量在函數(shù)內(nèi)部的影響。而在執(zhí)行初期,局部變量a未賦值,所以在函數(shù)內(nèi)第1行代碼讀取局部變量a的值也就是undefined。當(dāng)執(zhí)行到函數(shù)第2行代碼時(shí),則為局部變量賦值2,所以在第3行中就顯示2。
因此,在函數(shù)體內(nèi)使用全局變量是一種危險(xiǎn)的行為。為了避免此類問(wèn)題,應(yīng)該養(yǎng)成在函數(shù)體內(nèi)使用var語(yǔ)句顯式聲明局部變量。
點(diǎn)擊加載更多評(píng)論>>