typeof運算符可以用來檢查類型,如:
var car = {
model:"baba",
color:"red"
};
alert(typeof car);
結果是object。
1.undefined
對于任何未初始化的東西,都會将undefined賦給它,undefined的類型是undefined,是不是很怪異。
可以将變量賦為null,如var minicar = null;這個null與undefined是不是有點重複呢?其實,JavaScript剛出來時,認為要用一個值(undefined)表示變量還未初始化,用另一個值(null)表示沒有對象可賦給變量。是以,記住它們各自的用途就好。
(1)undefined用于表示變量未初始化,typeof undefined的結果是undefined。
(2)null用于表示對象不存在,typeof null的結果是object。
2.NaN
JavaScript使用NaN,Not a Number的縮寫,表示它無法表示的數值結果。NaN是不是你很怪異。它還有一個更怪異的地方,NaN不僅用于表示所有無法表示的數值,還是JavaScript中唯一一個與自己不相等的值!
if(NaN != NaN){ //他們真的不相等
alert("我們真的不想等!");
}
NaN的正确用法
NaN與任何東西,包括它自己都不相等,是以不能以任何方式檢查變量與NaN是否相等,除了使用特殊函數isNaN.
if(isNaN(myNum)){
alert("myNum said:"I am really a number");
}
事實上,NaN是一個很糟糕的名字,與其稱之為“不是數字”,還不如稱之為“無法表示的數字”。typeof NaN的結果是number
在JavaScript中,infinity指的任何超過浮點數上限而言,-infinity指的任何超過浮點數下限而言,怪異的地方就是infinity-infinity的結果是NaN。
比較
告訴你們一個大事實:“99” == 99 是相等的。為什麼可以這樣呢?JavaScript會按以下規則來比較:
(1)如果兩個值的類型相同,就直接進行比較。
(2)如果兩個值的類型不同,則嘗試将它們轉換為相同的類型,再進行比較。
如果将布爾值和數字、null和undefined或其他值進行比較呢,JavaScript會作如何轉換,然後再進行比較呢?其實,JavaScript規範包含一套非常簡單的規則,指定了對兩個不同類型的值進行比較時,将如何進行轉換,如果你能記住這些規則,你就能掌握JavaScript比較的工作原理,其他類型的程式設計語言通常不自動進行轉換,而JavaScript則會自動轉換。
相等符号有兩個"=="(相等)和“===”(嚴格相等)。**===(嚴格相等)涉及的規則隻有一條:當且僅當兩個值的類型和值都相同時,它們才嚴格相等。**同樣也有!==和!=,但前者比後者嚴格。