一、Undefined
Undefined 是 JavaScript 的基本数据类型之一,这个类型只有一个值,就是 undefined。
已经声明但未初始化的变量,其值就为undefined。
(未声明的变量和已声明未初始化的变量,其 typeof 都返回 undefined)
二、Null
Null 是第二个只有一个值 null 的数据类型,从逻辑角度看,null 值表示一个空对象指针,即 typeof(null) 返回"object"。
如果定义的变量在将来用于保存数据,在声明时,应该初始化为null。这样一来,通过检查null 值就知道相应的变量是否已经保存了一个对象的引用。
(undefined 值派生自null 值。)
alert(undefined == null) //true
三、NaN
NaN,即非数值,是一个特殊的数值,表示一个本该返回数值的操作没有返回数值的情况。例如:任何数值 / 0。
1、NaN 有两个特点:
(1)任何涉及 NaN 的操作都会返回NaN。
(2)NaN 和任何值都不相等,包括NaN本身。
2、isNaN( ):
接受一个任意类型的参数,判断该参数是否为 NaN。
isNaN( ) 的参数如果不是数值,会先尝试转换为数值,不能转换则返回true。
alert(isNaN(NaN)) //true
alert(isNaN(10)) //false
alert(isNaN("10")) //false
alert(isNaN("blue")) //true(不可转换)
alert(isNaN(true)) //false(可以被转换为数值1)
(在基于对象调用 isNaN() 函数时,会首先调用对象的 valueOf() 方法,然后确定该方法返回的值可以转换为数值。如果不能,再基于这个返回值调用 toString() 方法,再测试返回值)