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