# 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。