undefined:
全局属性,变量声明未初始化时,变量是undefind,及变量声明了,获取的typeof(变量)得到的结果也是 "undefind" ;如果变量未经声明就直接用回直接报错,但是获取未经声明变量的数据类型得到的结果也是 "undefind"。
null:
全局对象,表示"空",表示不存在或无效的对象,
NaN:
typeof(NaN)为"number", 表示不是一个数字,唯一一个不等于任何东西包括自己。所以要判断某个值是否是 NaN,不能使用 == 或 === 运算符。
提示:isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字。当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的情况。
三者的判断见: