# undefined 和 null 区别
推荐阅读《谈谈JavaScript undefined和null的区别和联系、常用使用场景及两者相关的类型转换》 (opens new window)
undefined 和 null 都表示值空缺的意思,undefined 从 null 派生而来,因此 undefined==null 返回true,两者往往可以互换。 undefined 是基本数据类型,声明了变量但未对其初始化时赋予该变量的值,是全局对象(window)的一个特殊属性。 null 是引用数据类型,用于表示尚未存在的对象
typeof undefined; ->"undefined"
typeof null; ->"object"
console.log(undefined === null); ->false
null使用场景:
- 作为函数的参数,表示该函数的参数是正常或意料之中的值的空缺。
- 作为对象原型链的终点。
- 解除对象引用,便于垃圾回收
undefined使用场景:
- 全局作用域判断变量是否存在,或者声明了,但是没有赋值
- 函数调用,应该提供的参数没有提供,该参数等于undefined。
- 对象没有赋值的属性,该属性的值为undefined。
- 函数没有返回值时,默认返回undefined。