javascript中的作用域scope介紹
更新時間:2010年12月28日 23:16:26 作者:
在一般程序設(shè)計語言中,作用域是按塊來劃分的。即“變量定義在哪個塊之內(nèi),這個塊就是變量的有效范圍”。
而在javascript中,變量的作用域是按函數(shù)來劃分的——變量在某個函數(shù)范圍內(nèi)有效。比如:
var f = false;
if(true) { var f = true; } //此時f位于if內(nèi),也就是塊內(nèi),等價于還是全局范圍內(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,并沒有因為test()的執(zhí)行而改變
再有,在javascript中聲明的全局變量都可以看作是window對象的一個屬性,比如:
var test = "this is a test";
alert(window.test == test) //結(jié)果為true
這正好驗證了上邊所說的全局變量也是window對象的屬性
最后,我們來看
[code]
function test() {
f = false;
}
test();
alert(f) //結(jié)果為false
[html]
那么,如果在聲明變量時,如果不添加var(隱式聲明),也被看作了全局變量了,盡管它是定義在函數(shù)之內(nèi)的。
復(fù)制代碼 代碼如下:
var f = false;
if(true) { var f = true; } //此時f位于if內(nèi),也就是塊內(nèi),等價于還是全局范圍內(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,并沒有因為test()的執(zhí)行而改變
再有,在javascript中聲明的全局變量都可以看作是window對象的一個屬性,比如:
復(fù)制代碼 代碼如下:
var test = "this is a test";
alert(window.test == test) //結(jié)果為true
這正好驗證了上邊所說的全局變量也是window對象的屬性
最后,我們來看
[code]
function test() {
f = false;
}
test();
alert(f) //結(jié)果為false
[html]
那么,如果在聲明變量時,如果不添加var(隱式聲明),也被看作了全局變量了,盡管它是定義在函數(shù)之內(nèi)的。
相關(guān)文章
JS處理數(shù)據(jù)四舍五入(tofixed與round的區(qū)別詳解)
下面小編就為大家?guī)硪黄狫S處理數(shù)據(jù)四舍五入(tofixed與round的區(qū)別詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10
ES6新特性三: Generator(生成器)函數(shù)詳解
這篇文章主要介紹了ES6新特性之Generator(生成器)函數(shù),簡單分析了Generator(生成器)函數(shù)的功能、定義、調(diào)用方法并結(jié)合實例形式給出了相關(guān)使用技巧,需要的朋友可以參考下2017-04-04
JavaScript實現(xiàn)的仿新浪微博原生態(tài)輸入字數(shù)即時檢查功能【兼容IE6】
這篇文章主要介紹了JavaScript實現(xiàn)的仿新浪微博原生態(tài)輸入字數(shù)即時檢查功能,涉及javascript事件響應(yīng)及字符串的遍歷、轉(zhuǎn)換、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09

