false
var a = false; console.log("a的数据类型为"+ typeof(a));
输出结果为
a的数据类型为boolean
这个很好理解,true和false为布尔值。
undefined
var b; console.log("b的数据类型为"+ typeof(b));
输出结果为
b的数据类型为undefined
所以undefined的意思就是未被赋值,声明了一个变量却没赋值时会返回undefined
NaN
var c = NaN; console.log("c的数据类型为"+ typeof(c));
c的数据类型为number
但是NaN为什么会是number呢?
看看MDN的介绍
NaN 是一个全局对象的属性。
NaN 属性的初始值就是 NaN,和 Number.NaN 的值一样。在现代浏览器中(ES5中), NaN 属性是一个不可配置(non-configurable),不可写(non-writable)的属性。但在ES3中,这个属性的值是可以被更改的,但是也应该避免覆盖。
在编码很少直接使用到 NaN。通常都是在计算失败时,作为 Math 的某个方法的返回值出现的(例如:Math.sqrt(-1))或者尝试将一个字符串解析成数字但失败了的时候(例如:parseInt("blabla"))。
可以看出来对-1开平方会返回NaN.再看一个例子
NaN === NaN; //false
NaN不等于任何值,连它本身也不等于。我们可以利用这一点去获取数组中的NaN
return arr !== arr;
null
var e = null; console.log("e的数据类型为"+ typeof(e));
e的数据类型为object
MDN上这样介绍null.
值null是一个javascript字面量,表示空值,既没有对象被呈现。它是javascript原始值之一。
null和undefined的区别:
typeof null // object typeof undefined // undefined null === undefined // false null == undefined // true (==会强制转换类型)
附上如何判断null