JavaScript中實(shí)現(xiàn)塊作用域的方法
更新時(shí)間:2010年04月01日 17:45:25 作者:
在Javascript中由于沒(méi)有作用域的概念,所以很容易發(fā)生標(biāo)識(shí)符名稱(chēng)的沖突,尤其是在比較大的項(xiàng)目中,這類(lèi)情況更容易發(fā)生
例如下面這段代碼
{
var temp = "12";
}
alert(temp); //輸出 12
如果按照通常的編程經(jīng)驗(yàn),那么alert函數(shù)是不可以訪問(wèn)到temp變量的,因?yàn)樗诹硗庖粋€(gè)塊中,但是在JavaScript中,卻沒(méi)有塊作用域的概念,所以這種語(yǔ)法對(duì)JS不起作用,但是我們?cè)趯?xiě)JS程序的時(shí)候,尤其是比較大的程序或是程序庫(kù),為了防止命名沖突,又需要一種控制變量作用域的機(jī)制,所以這里介紹一種比較普遍的方式,來(lái)實(shí)現(xiàn)塊作用域的概念,代碼如下:
(function() {
var temp = "123";
})();
alert(temp); //輸出錯(cuò)誤
如上面的代碼,定義了一個(gè)函數(shù)表達(dá)式,然后馬上調(diào)用它,這種形式模仿了塊作用域的概念,保護(hù)了塊內(nèi)的命名空間,這種方式在一些比較大的程序庫(kù)中很好用
(例如JQuery),有效的避免了命名沖突。事實(shí)上JQuery正是使用的這種方式來(lái)實(shí)現(xiàn)塊作用域的。
復(fù)制代碼 代碼如下:
{
var temp = "12";
}
alert(temp); //輸出 12
如果按照通常的編程經(jīng)驗(yàn),那么alert函數(shù)是不可以訪問(wèn)到temp變量的,因?yàn)樗诹硗庖粋€(gè)塊中,但是在JavaScript中,卻沒(méi)有塊作用域的概念,所以這種語(yǔ)法對(duì)JS不起作用,但是我們?cè)趯?xiě)JS程序的時(shí)候,尤其是比較大的程序或是程序庫(kù),為了防止命名沖突,又需要一種控制變量作用域的機(jī)制,所以這里介紹一種比較普遍的方式,來(lái)實(shí)現(xiàn)塊作用域的概念,代碼如下:
復(fù)制代碼 代碼如下:
(function() {
var temp = "123";
})();
alert(temp); //輸出錯(cuò)誤
如上面的代碼,定義了一個(gè)函數(shù)表達(dá)式,然后馬上調(diào)用它,這種形式模仿了塊作用域的概念,保護(hù)了塊內(nèi)的命名空間,這種方式在一些比較大的程序庫(kù)中很好用
(例如JQuery),有效的避免了命名沖突。事實(shí)上JQuery正是使用的這種方式來(lái)實(shí)現(xiàn)塊作用域的。
您可能感興趣的文章:
- JavaScript詞法作用域與調(diào)用對(duì)象深入理解
- JavaScript中的作用域鏈和閉包
- javascript作用域容易記錯(cuò)的兩個(gè)地方分析
- 深入理解JavaScript系列(14) 作用域鏈介紹(Scope Chain)
- 淺談javascript中的作用域
- js變量以及其作用域詳解
- js使用函數(shù)綁定技術(shù)改變事件處理程序的作用域
- javascript權(quán)威指南 學(xué)習(xí)筆記之變量作用域分享
- javascript中的作用域scope介紹
- 關(guān)于JavaScript中var聲明變量作用域的推斷
- JavaScript.The.Good.Parts閱讀筆記(二)作用域&閉包&減緩全局空間污染
- Javascript 變量作用域 兩個(gè)可能會(huì)被忽略的小特性
- Javascript學(xué)習(xí)筆記3 作用域
- JavaScript的變量作用域深入理解
- Javascript 作用域使用說(shuō)明
- JavaScript 變量作用域及閉包
- javascript 變量作用域 代碼分析
- javascript變量作用域使用中常見(jiàn)錯(cuò)誤總結(jié)
相關(guān)文章
ionic組件ion-tabs選項(xiàng)卡切換效果實(shí)例
這篇文章主要為大家詳細(xì)介紹了ionic組件ion-tabs選項(xiàng)卡切換效果實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08利用canvas實(shí)現(xiàn)的加載動(dòng)畫(huà)效果實(shí)例代碼
之前看到一個(gè)Android的加載效果不錯(cuò),一直想自己動(dòng)手做一個(gè),正好這段時(shí)間重溫了一個(gè)Canvas,所以就嘗試了一下。下面這篇文章主要給大家介紹了關(guān)于利用canvas實(shí)現(xiàn)加載效果的相關(guān)資料,需要的朋友可以參考下。2017-07-07JavaScript實(shí)現(xiàn)簡(jiǎn)單隨機(jī)點(diǎn)名器
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單隨機(jī)點(diǎn)名器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11ElementUI table無(wú)縫循環(huán)滾動(dòng)的示例代碼
這篇文章主要介紹了ElementUI table無(wú)縫循環(huán)滾動(dòng)的示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08js 巧妙去除數(shù)組中的重復(fù)項(xiàng)
最近, 我在看YAHOO.util.YUILoader類(lèi)的源碼, 其中有個(gè)排除數(shù)組重復(fù)項(xiàng)的方法, 讓我覺(jué)得甚為巧妙, 這里分享下…2010-01-01基于Flowplayer打造一款免費(fèi)的WEB視頻播放器附源碼
Flowplayer是一款免費(fèi)的WEB視頻播放器。它支持播放flv、swf等流媒體和圖片文件,能夠非常流暢的播放視頻文件,支持自定義配置和擴(kuò)展。下面本篇文章給大家介紹基于Flowplayer打造一款免費(fèi)的WEB視頻播放器,需要的朋友可以參考下2015-09-09Bootstrap每天必學(xué)之導(dǎo)航條(二)
Bootstrap每天必學(xué)之導(dǎo)航條,進(jìn)一步向大家講解了導(dǎo)航條養(yǎng)殖,以及導(dǎo)航條中元素的使用方法,感興趣的小伙伴們可以參考一下2016-03-03簡(jiǎn)介JavaScript錯(cuò)誤處理機(jī)制
這篇文章主要介紹了JavaScript錯(cuò)誤處理機(jī)制的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下2020-08-08