基于JavaScript 聲明全局變量的三種方式詳解
JS中聲明全局變量主要分為顯式聲明或者隱式聲明下面分別介紹。
聲明方式一:
使用var(關(guān)鍵字)+變量名(標(biāo)識(shí)符)的方式在function外部聲明,即為全局變量,否則在function聲明的是局部變量。該方式即為顯式聲明詳細(xì)如下:
<script> var test = 5;//全局變量 function a(){ var a = 3;//局部變量 alert(a); } function b(){ alert(test); } //a();//調(diào)用a方法,那么方法里面的內(nèi)容才會(huì)執(zhí)行 //b();//同上 </script>
聲明方式二:
沒(méi)有使用var,直接給標(biāo)識(shí)符test賦值,這樣會(huì)隱式的聲明了全局變量test。即使該語(yǔ)句是在一個(gè)function內(nèi),當(dāng)該function被執(zhí)行后test變成了全局變量。
<script> test = 5;//全局變量 function a(){ aa = 3;//也是全局變量 alert(test); } //a(); //輸出5 //alert(aa);//這里也可以方法a()方法里面的變量,因?yàn)閍a是全局變量 </script>
聲明方式三:
使用window全局對(duì)象來(lái)聲明,全局對(duì)象的屬性對(duì)應(yīng)也是全局變量,詳細(xì)如下:
<script> window.test = 50; alert(test);//輸出50 </script>
這種方式經(jīng)常被用到一個(gè)匿名函數(shù)執(zhí)行后將一些函數(shù)公開到全局。 如JQuery1.5中最末一句
代碼如下:
window.jQuery = window.$ = jQuery;
全局變量的優(yōu)點(diǎn):
可以減少變量的個(gè)數(shù),減少由于實(shí)際參數(shù)和形式參數(shù)的數(shù)據(jù)傳遞帶來(lái)的時(shí)間消耗。
全局變量的缺點(diǎn):
(1)全局變量保存在靜態(tài)存貯區(qū),程序開始運(yùn)行時(shí)為其分配內(nèi)存,程序結(jié)束釋放該內(nèi)存。與局部變量的動(dòng)態(tài)分配、動(dòng)態(tài)釋放相比,生存期比較長(zhǎng),因此過(guò)多的全局變量會(huì)占用較多的內(nèi)存單元。
(2)全局變量破壞了函數(shù)的封裝性能。函數(shù)象一個(gè)黑匣子,一般是通過(guò)函數(shù)參數(shù)和返回值進(jìn)行輸入輸出,函數(shù)內(nèi)部實(shí)現(xiàn)相對(duì)獨(dú)立。但函數(shù)中如果使用了全局變量,那么函數(shù)體內(nèi)的語(yǔ)句就可以繞過(guò)函數(shù)參數(shù)和返回值進(jìn)行存取,這種情況破壞了函數(shù)的獨(dú)立性,使函數(shù)對(duì)全局變量產(chǎn)生依賴。同時(shí),也降低了該函數(shù)的可移植性。
(3)全局變量使函數(shù)的代碼可讀性降低。由于多個(gè)函數(shù)都可能使用全局變量,函數(shù)執(zhí)行時(shí)全局變量的值可能隨時(shí)發(fā)生變化,對(duì)于程序的查錯(cuò)和調(diào)試都非常不利。
因此,如果不是萬(wàn)不得已,最好不要使用全局變量。
相關(guān)文章
Javascript基礎(chǔ)教程之?dāng)?shù)據(jù)類型 (數(shù)值 Number)
本文講述的是javascript中九種數(shù)據(jù)類型的第二種--數(shù)值(Number),使用非常簡(jiǎn)單,這里推薦給小伙伴們。2015-01-01使用RequireJS優(yōu)化JavaScript引用代碼的方法
這篇文章主要介紹了使用RequireJS優(yōu)化JavaScript引用代碼的方法,RequireJS是一款人氣JS庫(kù),需要的朋友可以參考下2015-07-07Firefox window.close()的使用注意事項(xiàng)
window.close()在IE下可以執(zhí)行關(guān)閉,但在Firefox下不關(guān)閉,不是JS代碼window.close()的問(wèn)題,而是Firefox的配置問(wèn)題2009-04-04javascript學(xué)習(xí)筆記整理(概述、變量、數(shù)據(jù)類型簡(jiǎn)介)
這篇文章主要介紹了javascript學(xué)習(xí)筆記整理(概述-變量-數(shù)據(jù)類型),需要的朋友可以參考下2015-10-10實(shí)現(xiàn)網(wǎng)頁(yè)頁(yè)面跳轉(zhuǎn)的幾種方法(meta標(biāo)簽、js實(shí)現(xiàn)、php實(shí)現(xiàn))
今天總結(jié)了幾種頁(yè)面跳轉(zhuǎn)的方法,分別是用meta標(biāo)簽實(shí)現(xiàn)、用javascript實(shí)現(xiàn)、用php實(shí)現(xiàn),下面就來(lái)一一分享一下吧。2014-05-05Javascript學(xué)習(xí)筆記2 函數(shù)
在Javascript中,function才是Javascript的第一型。當(dāng)我們寫下一段函數(shù)時(shí),其實(shí)不過(guò)是建立了一個(gè)function類型的實(shí)體。2010-01-01