false
var a = false; console.log("a的數(shù)據(jù)類型為"+ typeof(a));
輸出結(jié)果為
a的數(shù)據(jù)類型為boolean
這個很好理解,true和false為布爾值。
undefined
var b; console.log("b的數(shù)據(jù)類型為"+ typeof(b));
輸出結(jié)果為
b的數(shù)據(jù)類型為undefined
所以undefined的意思就是未被賦值,聲明了一個變量卻沒賦值時會返回undefined
NaN
var c = NaN; console.log("c的數(shù)據(jù)類型為"+ typeof(c));
c的數(shù)據(jù)類型為number
但是NaN為什么會是number呢?
看看MDN的介紹
NaN 是一個全局對象的屬性。
NaN 屬性的初始值就是 NaN,和 Number.NaN 的值一樣。在現(xiàn)代瀏覽器中(ES5中), NaN 屬性是一個不可配置(non-configurable),不可寫(non-writable)的屬性。但在ES3中,這個屬性的值是可以被更改的,但是也應(yīng)該避免覆蓋。
在編碼很少直接使用到 NaN。通常都是在計算失敗時,作為 Math 的某個方法的返回值出現(xiàn)的(例如:Math.sqrt(-1))或者嘗試將一個字符串解析成數(shù)字但失敗了的時候(例如:parseInt("blabla"))。
可以看出來對-1開平方會返回NaN.再看一個例子
NaN === NaN; //false
NaN不等于任何值,連它本身也不等于。我們可以利用這一點去獲取數(shù)組中的NaN
return arr !== arr;
null
var e = null; console.log("e的數(shù)據(jù)類型為"+ typeof(e));
e的數(shù)據(jù)類型為object
MDN上這樣介紹null.
值null是一個javascript字面量,表示空值,既沒有對象被呈現(xiàn)。它是javascript原始值之一。
null和undefined的區(qū)別:
typeof null // object typeof undefined // undefined null === undefined // false null == undefined // true (==會強制轉(zhuǎn)換類型)
附上如何判斷null