探討JavaScript中聲明全局變量三種方式的異同
變量及變量聲明是一門(mén)語(yǔ)言最基本的概念,初學(xué)者都會(huì)很快掌握。JavaScript中聲明變量也是如此,很簡(jiǎn)單var(關(guān)鍵字)+變量名(標(biāo)識(shí)符)。
方式1
var test;
var test = 5;需注意的是該句不能包含在function內(nèi),否則是局部變量。這是第一種方式聲明全局變量。
方式2
test = 5;
沒(méi)有使用var,直接給標(biāo)識(shí)符test賦值,這樣會(huì)隱式的聲明了全局變量test。即使該語(yǔ)句是在一個(gè)function內(nèi),當(dāng)該function被執(zhí)行后test變成了全局變量。
方式3
window.test;
window.test = 5;這種方式經(jīng)常被用到一個(gè)匿名函數(shù)執(zhí)行后將一些函數(shù)公開(kāi)到全局。 如JQuery1.5中最末一句
window.jQuery = window.$ = jQuery;
如果只是使用變量test,那么三種方式將沒(méi)有什么區(qū)別。比如:alert(test) 都將顯示5。但三種方式在某些情況下還是有區(qū)別的。分別按以上三種方式聲明三個(gè)變量a1,a2,a3。
a1 = 11;
var a2 = 22;
window.a3 = 33;
1,for in window
for(a in window){
if(a=='a1'||a=='a2'||a=='a3'){
alert(a)
}
}
IE6/7/8/9:只彈出了a3,說(shuō)明通過(guò)第一,二種方式聲明的全局變量通過(guò)for in window時(shí)將獲取不到。
Firefox/Chrome/Safari/Opera :a1,a2,a3都彈出了,說(shuō)明三種方式聲明的全局變量,通過(guò)for in window時(shí)都能獲取到。
2,delete
try {
alert(delete a1);
}catch(e){alert('無(wú)法delete a1')}
try{
alert(delete a2);
}catch(e){alert('無(wú)法delete a2')}
try{
alert(delete a3);
}catch(e){alert('無(wú)法delete a3')}
結(jié)果如下

可以看到,
1,delete a2所有瀏覽器都是false。即通過(guò)var聲明的變量無(wú)法刪除,所有瀏覽器表現(xiàn)一致。這在犀牛書(shū)上也有提到。
2,通過(guò)window.a3方式聲明的全局變量在IE6/7/8中均無(wú)法刪除,IE9/Firefox/Chrome/Safari/Opera中卻可以。
雖然有以上兩點(diǎn)不同,但當(dāng)用in運(yùn)算時(shí),都返回true。
alert('a1' in window);//true
alert('a2' in window);//true
alert('a3' in window);//true
用with打開(kāi)對(duì)象window閉包時(shí),所有瀏覽器也表現(xiàn)一致,如下
with(window){
if(a1){
alert(a1);//11
}
if(a2){
alert(a2);//22
}
if(a3){
alert(a3);//33
}
}
- 基于JavaScript 聲明全局變量的三種方式詳解
- javascript中局部變量和全局變量的區(qū)別詳解
- Javascript全局變量var與不var的區(qū)別深入解析
- javascript中運(yùn)用閉包和自執(zhí)行函數(shù)解決大量的全局變量問(wèn)題
- javascript全局變量封裝模塊實(shí)現(xiàn)代碼
- JavaScript中全局變量、函數(shù)內(nèi)變量以及常量表達(dá)式的效率測(cè)試
- 理運(yùn)用命名空間讓js不產(chǎn)生沖突避免全局變量的泛濫
- 淺談JavaScript的全局變量與局部變量
- JS全局變量和局部變量最新解析
- js隱式全局變量造成的bug示例代碼
- Javascript學(xué)習(xí)之談?wù)凧S的全局變量跟局部變量(推薦)
- JavaScript防止全局變量污染的方法總結(jié)
相關(guān)文章
echarts折線圖月份數(shù)據(jù)不足自動(dòng)補(bǔ)0和日期達(dá)到數(shù)據(jù)連續(xù)的效果(最新推薦)
這篇文章主要介紹了echarts折線圖月份數(shù)據(jù)不足自動(dòng)補(bǔ)0和日期達(dá)到數(shù)據(jù)連續(xù)的效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03
基于JavaScript或jQuery實(shí)現(xiàn)網(wǎng)站夜間/高亮模式
這篇文章主要介紹了基于JavaScript或jQuery實(shí)現(xiàn)網(wǎng)站夜間/高亮模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
fixedBox固定div漂浮代碼支持ie6以上大部分主流瀏覽器
本例為大家分享的是fixedBox固定div漂浮代碼支持ie6以上大部分瀏覽器,需要的朋友可以參考下2014-06-06
uniapp獲取當(dāng)前位置及檢測(cè)授權(quán)狀態(tài)效果
這篇文章主要介紹了uniapp獲取當(dāng)前位置及檢測(cè)授權(quán)狀態(tài)效果,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-04-04
JavaScript插件化開(kāi)發(fā)教程 (四)
這篇文章主要介紹了JavaScript插件化開(kāi)發(fā)教程第四篇,需要的朋友可以參考下2015-01-01
JavaScript實(shí)現(xiàn)循環(huán)輪播圖
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)循環(huán)輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04

