JavaScript中的變量聲明早于賦值分析
實(shí)際有兩個(gè)步驟:
1 初始化a為undefined
2 a賦值3
因此會(huì)出現(xiàn)一些“匪夷所思”的現(xiàn)象,即JS中變量可以先使用后聲明。這在Java中是不允許的。
int a = 1;
編譯通不過。但JS可以,如下
var a;
雖然是undefined,但不會(huì)報(bào)錯(cuò)。說明a的確聲明了,且為undefined。
如果只是“alert(a)”,沒有“var a”的話JS引擎會(huì)報(bào)錯(cuò)的。
FF中如下
雖然可以先使用再聲明,但這樣會(huì)造成賦值的效果丟失。如下
alert(a);
var a = 1;
這次輸出的仍然是undefined而非1。
又如,
alert('a' in window); // true
var a;
雖然代碼形式上寫在alert后,引擎仍然先自動(dòng)處理var的聲明。最后輸出的是true。
明白了這些就不難理解下面的代碼運(yùn)行結(jié)果了
if (!("a" in window)) {
var a = 1;
}
alert(a);
相關(guān)文章
JavaScript中實(shí)現(xiàn)單體模式分享
這篇文章主要介紹了JavaScript中實(shí)現(xiàn)單體模式分享,單體模式的定義:單體是一個(gè)用來劃分命名空間并將一批相關(guān)方法和屬性組織在一起的對象,如果它能夠被實(shí)例化,那么只能被實(shí)例化一次,需要的朋友可以參考下2015-01-01JS棧stack類的實(shí)現(xiàn)與使用方法示例
這篇文章主要介紹了JS棧stack類的實(shí)現(xiàn)與使用方法,結(jié)合實(shí)例形式分析了棧的原理,以及javascript定義與使用棧的基本操作技巧,需要的朋友可以參考下2019-01-01JavaScript實(shí)現(xiàn)簡易tab欄切換案例
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡易tab欄切換案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06javascript實(shí)現(xiàn)多級聯(lián)動(dòng)下拉菜單的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)多級聯(lián)動(dòng)下拉菜單的方法,通過javascript自定義函數(shù)實(shí)現(xiàn)對多級聯(lián)動(dòng)下拉菜單的操作,是非常實(shí)用的技巧,需要的朋友可以參考下2015-02-02小程序封裝wx.request請求并創(chuàng)建接口管理文件的實(shí)現(xiàn)
這篇文章主要介紹了小程序封裝wx.request請求并創(chuàng)建接口管理文件2019-04-04JS對大量數(shù)據(jù)進(jìn)行多重過濾的方法
今天在工作中遇到一個(gè)問題,當(dāng)前端通過Ajax從后端取得了大量的數(shù)據(jù),需要根據(jù)一些條件過濾,但是發(fā)現(xiàn)寫的過濾方法有問題,后來仔細(xì)的查找問題,通過網(wǎng)上的資料終于解決了這個(gè)問題,現(xiàn)在將解決的過程以及解決方法分享給大家,有需要的朋友們可以參考借鑒。2016-11-11JS實(shí)現(xiàn)簡易換圖時(shí)鐘功能分析
這篇文章主要介紹了JS實(shí)現(xiàn)簡易換圖時(shí)鐘功能,結(jié)合實(shí)例形式分析了javascript結(jié)合時(shí)間函數(shù)定時(shí)變換顯示圖片實(shí)現(xiàn)時(shí)鐘功能的相關(guān)操作技巧,代碼中備有較為詳盡的注釋便于理解,需要的朋友可以參考下2018-01-01JavaScript webpack模塊打包器如何優(yōu)化前端性能
本系列主要整理前端面試中需要掌握的知識點(diǎn)。本節(jié)介紹webpack如何優(yōu)化前端性能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08