javascript中的作用域scope介紹
更新時(shí)間:2010年12月28日 23:16:26 作者:
在一般程序設(shè)計(jì)語言中,作用域是按塊來劃分的。即“變量定義在哪個(gè)塊之內(nèi),這個(gè)塊就是變量的有效范圍”。
而在javascript中,變量的作用域是按函數(shù)來劃分的——變量在某個(gè)函數(shù)范圍內(nèi)有效。比如:
var f = false;
if(true) { var f = true; } //此時(shí)f位于if內(nèi),也就是塊內(nèi),等價(jià)于還是全局范圍內(nèi)
alert(f) //所以,結(jié)果為true
再如下例:
var f = false;
function test() {
var f = true; //這是函數(shù)內(nèi)定義的變量,只在函數(shù)內(nèi)部有效,函數(shù)執(zhí)行完畢后,該變量將被釋放
}
test();
alert(f) //結(jié)果為false,并沒有因?yàn)閠est()的執(zhí)行而改變
再有,在javascript中聲明的全局變量都可以看作是window對(duì)象的一個(gè)屬性,比如:
var test = "this is a test";
alert(window.test == test) //結(jié)果為true
這正好驗(yàn)證了上邊所說的全局變量也是window對(duì)象的屬性
最后,我們來看
[code]
function test() {
f = false;
}
test();
alert(f) //結(jié)果為false
[html]
那么,如果在聲明變量時(shí),如果不添加var(隱式聲明),也被看作了全局變量了,盡管它是定義在函數(shù)之內(nèi)的。
復(fù)制代碼 代碼如下:
var f = false;
if(true) { var f = true; } //此時(shí)f位于if內(nèi),也就是塊內(nèi),等價(jià)于還是全局范圍內(nèi)
alert(f) //所以,結(jié)果為true
再如下例:
復(fù)制代碼 代碼如下:
var f = false;
function test() {
var f = true; //這是函數(shù)內(nèi)定義的變量,只在函數(shù)內(nèi)部有效,函數(shù)執(zhí)行完畢后,該變量將被釋放
}
test();
alert(f) //結(jié)果為false,并沒有因?yàn)閠est()的執(zhí)行而改變
再有,在javascript中聲明的全局變量都可以看作是window對(duì)象的一個(gè)屬性,比如:
復(fù)制代碼 代碼如下:
var test = "this is a test";
alert(window.test == test) //結(jié)果為true
這正好驗(yàn)證了上邊所說的全局變量也是window對(duì)象的屬性
最后,我們來看
[code]
function test() {
f = false;
}
test();
alert(f) //結(jié)果為false
[html]
那么,如果在聲明變量時(shí),如果不添加var(隱式聲明),也被看作了全局變量了,盡管它是定義在函數(shù)之內(nèi)的。
相關(guān)文章
JS上傳圖片前實(shí)現(xiàn)圖片預(yù)覽效果的方法
這篇文章主要介紹了JS上傳圖片前實(shí)現(xiàn)圖片預(yù)覽效果的方法,涉及javascript操作圖片的技巧,需要的朋友可以參考下2015-03-03微信二次分享報(bào)錯(cuò)invalid signature問題及解決方法
基于微信公眾號(hào)開發(fā)的h5頁(yè)面(使用jssdk接口),由用戶A分享給用戶B,用戶B再次分享這個(gè)頁(yè)面時(shí),不能成功分享。這篇文章主要介紹了微信二次分享報(bào)錯(cuò)invalid signature問題及解決方法,需要的朋友可以參考下2019-04-04基于JavaScript實(shí)現(xiàn)全選、不選和反選效果
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)全選、不選和反選效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02使用 Jest 和 Supertest 進(jìn)行接口端點(diǎn)測(cè)試實(shí)例詳解
這篇文章主要介紹了使用 Jest 和 Supertest 進(jìn)行接口端點(diǎn)測(cè)試,結(jié)合實(shí)例形式詳細(xì)分析了使用 Jest 和 Supertest 進(jìn)行接口端點(diǎn)測(cè)試具體原理、操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-04-04gojs實(shí)現(xiàn)螞蟻線動(dòng)畫效果
這篇文章介紹了gojs實(shí)現(xiàn)螞蟻線動(dòng)畫效果的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01JavaScript基于inquirer封裝一個(gè)控制臺(tái)文件選擇器
這篇文章主要介紹了JavaScript基于inquirer封裝一個(gè)控制臺(tái)文件選擇器,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08前端實(shí)現(xiàn)Word在線預(yù)覽功能詳解
這篇文章主要給大家介紹了關(guān)于前端實(shí)現(xiàn)Word在線預(yù)覽功能的相關(guān)資料,工作中經(jīng)常有時(shí)會(huì)遇到需要給用戶創(chuàng)建word文檔并實(shí)現(xiàn)word文檔在線預(yù)覽的需求,需要的朋友可以參考下2023-09-09