網(wǎng)站制作NEWS
在網(wǎng)頁(yè)里面的寫(xiě)javascript的疑問(wèn): alert(name)會(huì)彈出對(duì)話(huà)框,內(nèi)容為空 alert(age)時(shí)沒(méi)反應(yīng)
因?yàn)閣indow.name是空字符串,window.age是undefined,所以你alert(age)會(huì)報(bào)錯(cuò),alert(name)會(huì)出對(duì)話(huà)框
你需要弄明白三個(gè)概念:
1:什么是undefined?javascript的undefined其實(shí)有兩個(gè)概念,一種就是報(bào)錯(cuò)的時(shí)候說(shuō)某個(gè)變量undefined,這個(gè)時(shí)候它是形容詞,說(shuō)某個(gè)變量沒(méi)定義,還有一種就是javascript的一個(gè)頂級(jí)對(duì)象,他就是一個(gè)object,跟字符串,數(shù)字一樣,這個(gè)時(shí)候它是名詞
2:alert什么時(shí)候會(huì)報(bào)錯(cuò)呢?并不是你傳遞一個(gè)參數(shù)等于undefined(名詞)它就報(bào)錯(cuò),而是你傳給它一個(gè)undefined(形容詞)參數(shù)它才報(bào)錯(cuò),比如下面兩種情況都不會(huì)報(bào)錯(cuò):
alert(undefined);
var a = undefined;alert(a);
在這兩句中其實(shí)undefined都是通過(guò)一個(gè)聲明過(guò)的變量作為一個(gè)代表傳遞個(gè)alert的,第一句是隱藏變量,你不知道它的名字,是機(jī)器替你創(chuàng)建的,第二句就是a變量,alert首先找到變量,然后變量指向undefined對(duì)象,不會(huì)打亂javascript運(yùn)行機(jī)制,所以把可以把undefined打印出來(lái)
但是如果你從來(lái)沒(méi)聲明過(guò)一個(gè)變量,比如直接寫(xiě)個(gè)alert(age);而age這個(gè)變量從來(lái)沒(méi)出現(xiàn)過(guò),它也不是當(dāng)前運(yùn)行域中的默認(rèn)變量,alert處理age的時(shí)候就看不懂它,更不會(huì)通過(guò)它找到undefined對(duì)象
3:javascript的變量都是在自己的scope內(nèi)才有效,最外層的scope就是window,你平時(shí)看到的全局變量其實(shí)全都是寄存在window對(duì)象下面,alert(name)其實(shí)調(diào)用的是alert(window.name),它不會(huì)報(bào)錯(cuò)是因?yàn)閣indow有name成員,只不過(guò)它是個(gè)空字符串而已,而age不同,window.age根本不存在,所以就會(huì)導(dǎo)致運(yùn)行期錯(cuò)誤
汕頭招聘網(wǎng)站哪個(gè)好
多重隨機(jī)標(biāo)簽