一、Undefined
undefined 属性用于存放 JavaScript 中未定义的值
它表示变量声明过但并未赋过值
提示:无论什么情况下都没有必要把一个变量的值显式地设置为undefined,但是设置这个值为Null可以释放这个对象的内存,把此变量的指针设置为空。
var
二、NaN
NaN 即非数值(Not a Number)
NaN 属性 与 Number.Nan 属性相同。
提示: 请使用 isNaN() 来判断一个值是否是数字。原因是 NaN 与所有值都不相等,包括它自己。但是在Set集合中NaN被判定为和它自己相等。
深入探讨:参考维基百科
NaN(NotaNumber,非数)是计算机科学中数值数据类型的一类值,表示未定义或不可表示的值。常在浮点数运算中使用。首次引入NaN的是1985年的IEEE 754浮点数标准。
这也就解释了下面的现象 typeof NaN == ‘number’
console
所以这里不是js设计上的问题。
你可以把 Not a Number 理解为特殊的数字,就像无穷大无穷小也是特殊的数字一样, Not a Number 的字面意思则可以理解为它是一个不可以表达出来的数字。
三、Null
在 JavaScript 中 null 表示 "什么都没有"。
null是一个只有一个值的特殊类型。表示一个空对象引用。
从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值会返回“object”的原因。
提示:用 typeof 检测 null 返回是object。null 和 undefined 的值相等,但类型不等
typeof
四、如何判断这三者
Undefined 使用 typeof
let
NaN 使用 isNaN()
let
Null 的判断
let