1、not defined
一个未定义的变量是没有声明的变量,直接使用会报错误。
console.log(a)
2、undefiend
一个定义了但未赋值的变量
var a;
console.log('a',a)
console.log('b',b)
var b;
var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。
3、null
null是原始类型的值,且保存在栈中。是js的关键字,表示空值,是一个不存在的对象的占位符。表示一个空对象引用,用typeof检测返回是object。
// 当访问一个不存在的DOM节点时
console.log('不存在的DOM节点', document.getElementById('#a'));
// Object的原型链终点
console.log('Object的原型链终点', Object.prototype.__proto__)
4、NaN
NaN是一个特殊的数字类型,not a number的缩写,表示不是一个合法的数字。
不等于任何数 包括自己 NaN == NaN // false
Number('a') // NaN
Number(undefined) // NaN
Math.log(-1) // NaN
NaN + 1 // NaN
tip:
1、isNaN() 判断非数字,返回一个布尔类型值 true/false。
2、undefined是派生自null,null是一种特殊的object;NaN是一种特殊的number。undefined==null。