javascript中的作用域scope介紹
更新時間:2010年12月28日 23:16:26 作者:
在一般程序設計語言中,作用域是按塊來劃分的。即“變量定義在哪個塊之內,這個塊就是變量的有效范圍”。
而在javascript中,變量的作用域是按函數(shù)來劃分的——變量在某個函數(shù)范圍內有效。比如:
var f = false;
if(true) { var f = true; } //此時f位于if內,也就是塊內,等價于還是全局范圍內
alert(f) //所以,結果為true
再如下例:
var f = false;
function test() {
var f = true; //這是函數(shù)內定義的變量,只在函數(shù)內部有效,函數(shù)執(zhí)行完畢后,該變量將被釋放
}
test();
alert(f) //結果為false,并沒有因為test()的執(zhí)行而改變
再有,在javascript中聲明的全局變量都可以看作是window對象的一個屬性,比如:
var test = "this is a test";
alert(window.test == test) //結果為true
這正好驗證了上邊所說的全局變量也是window對象的屬性
最后,我們來看
[code]
function test() {
f = false;
}
test();
alert(f) //結果為false
[html]
那么,如果在聲明變量時,如果不添加var(隱式聲明),也被看作了全局變量了,盡管它是定義在函數(shù)之內的。
復制代碼 代碼如下:
var f = false;
if(true) { var f = true; } //此時f位于if內,也就是塊內,等價于還是全局范圍內
alert(f) //所以,結果為true
再如下例:
復制代碼 代碼如下:
var f = false;
function test() {
var f = true; //這是函數(shù)內定義的變量,只在函數(shù)內部有效,函數(shù)執(zhí)行完畢后,該變量將被釋放
}
test();
alert(f) //結果為false,并沒有因為test()的執(zhí)行而改變
再有,在javascript中聲明的全局變量都可以看作是window對象的一個屬性,比如:
復制代碼 代碼如下:
var test = "this is a test";
alert(window.test == test) //結果為true
這正好驗證了上邊所說的全局變量也是window對象的屬性
最后,我們來看
[code]
function test() {
f = false;
}
test();
alert(f) //結果為false
[html]
那么,如果在聲明變量時,如果不添加var(隱式聲明),也被看作了全局變量了,盡管它是定義在函數(shù)之內的。
相關文章
微信二次分享報錯invalid signature問題及解決方法
基于微信公眾號開發(fā)的h5頁面(使用jssdk接口),由用戶A分享給用戶B,用戶B再次分享這個頁面時,不能成功分享。這篇文章主要介紹了微信二次分享報錯invalid signature問題及解決方法,需要的朋友可以參考下2019-04-04基于JavaScript實現(xiàn)全選、不選和反選效果
這篇文章主要為大家詳細介紹了基于JavaScript實現(xiàn)全選、不選和反選效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02使用 Jest 和 Supertest 進行接口端點測試實例詳解
這篇文章主要介紹了使用 Jest 和 Supertest 進行接口端點測試,結合實例形式詳細分析了使用 Jest 和 Supertest 進行接口端點測試具體原理、操作技巧與相關注意事項,需要的朋友可以參考下2020-04-04JavaScript基于inquirer封裝一個控制臺文件選擇器
這篇文章主要介紹了JavaScript基于inquirer封裝一個控制臺文件選擇器,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-08-08