NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括本身,例如:
alert(NaN==NaN) //false
针对这两个特点,定义了isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接受一个值后之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"或Boolean值。而任何不能被转换为数值的值都会导致这个函数返回true。例子:
(isNaN(NaN)) //true
(isNaN(10)) //false 10是一个数值
(isNaN("10")) //false 可以转换成数值10
(isNaN("blue")) //true 不能转换成数值
(isNaN(true)) //false 可以被转化成数值1