null 和 undefined 的区别

时间:2022-03-06 04:45:34

 

null:Null类型,代表 “空值”,代表一个空对象指针,使用typeof运算得到 “object” ,所以可以认为它是一个特殊的对象值。

undefined:Undefined类型,当一个声明了一个变量未初始化时,得到的就是 undefined。

null是javascript的关键字,可以认为是对象类型,它是一个空对象指针,和其他语言一样都代表“空值”,不过undefined却是javascript才有的。undefined是在ECMAScript第三版引入的,为了区分指针对象和未初始化的变量,它是一个预定义的全局变量。没有返回值的函数返回为undefined,没有实参的形参也是undefined。

 

javascript权威指南:null 和 undefined 都表示 “值的空缺”,你可以认为 undefined 是表示系统级的、出乎意料的或类似错误的值的空缺,而null是表示程序级的、正常的或在意料之中的值的空缺。

 

javascript高级程序设计:在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。unll值则是表示空对象指针。

 

typeof undefined  //  undefined

typeof null     // object

 

null == undefined  // true

ECMAScript认为 undefined 是从 null 中派生出来的,所以把它们定义为相等的。但是,如果在一些情况下,我们一定要区分这两个值,那么可以使用下面的方法:

1、 null === undefined  // false

2、 typeof null === typeof undefined  // false

 

采坑点:

  undefined + 6   // NaN

  null + 6     // 6

根据C语言的传统,null被设计成可以自动转为0

 

目前的用法

null表示 “没有对象”,即该处不应该有值。

(1)作为函数的参数,表示该函数的参数不是对象。

(2)作为对象原型链的终点。

undefined表示“缺少值”,就是此处应该有一个值,但是还没有定义。

(1)变量被声明了,但没有赋值时,就等于undefined。

(2)调用函数时,应该提供的参数没有提供,该参数就等于undefined。

(3)对象没有赋值的属性,该属性的值为undefined。

(4)函数没有返回值时,默认返回undefined。

 

使用实例

转化的时候,undefined为NaN,null为0.

Number(undefined)  // NaN

Number(undefined + 10)  //NaN

Number(null)  // 0

Number(10 + null)  // 10

undefined === null  //false

undefined == null  //true