? ? ? ?使用var聲明的變量會(huì)自動(dòng)被添加到最接近的環(huán)境中荒吏。在函數(shù)內(nèi)部驱还,最接近的環(huán)境就是函數(shù)的局部環(huán)境涛碑;在with語句中精堕,最接近的環(huán)境是函數(shù)環(huán)境。如果初始化變量時(shí)沒有使用var聲明蒲障,該變量會(huì)自動(dòng)被添加到全局環(huán)境歹篓。如下所示:
function add (num1,num2){
var sum = num1 +num2 揉阎;
return sum庄撮;
}
var result = add(10,20)毙籽;//30
alert(sum)洞斯;//由于sum不是有效的變量,因此導(dǎo)致錯(cuò)誤
? ? ? 以上代碼中的函數(shù)add()定義了一個(gè)名為sum 的局部變量坑赡,該變量包含加法操作的結(jié)果巡扇。雖然結(jié)果值從函數(shù)中返回了,但變量sum在函數(shù)外部是訪問不到的垮衷。如果省略這個(gè)例子中的var關(guān)鍵字,那么當(dāng)add()執(zhí)行完畢后乖坠,sum也將可以訪問到:
function add(num1搀突,num2){
sum = num1 + num2;
return sum熊泵;
}
var result = add(10仰迁,20)甸昏;//30
alert(sum);//30
? ? ? ? 這個(gè)例子中的變量sum在被初始化賦值時(shí)沒有使用var關(guān)鍵字徐许。于是施蜜,當(dāng)調(diào)用完add()之后,添加到全局環(huán)境的變量sum將繼續(xù)存在雌隅;即使函數(shù)已經(jīng)執(zhí)行完畢翻默,后面的代碼依舊可以訪問它。