在javascript的数据类型中,有两个特殊的数据类型null和undfined,这种我们经常会遇到,比如后端接口的返回,很多时候没有值的字段就是返回的null,但是在ES6前,我们都用的var定义变量,没有赋予初始值的时候,该变量是可以使用的,此时它的值默认就是undefined。然而这两个常用的变量,我们在做一些条件判断或者使用的时候需要做一些区分。那它们之间到底有什么区别呢?
一、相同的地方:
1、它们JavaScript中的特殊值(特殊的数据类型),表示没有值的状态
2、它们都是JavaScript中的关键字
二、null和undefined定义
1、null
表示变量已声明,但赋予初始值为空。即它是一个关键字,表示变量被明确地赋值为“空”。当一个变量被赋值为null时,它的值被认为是空的,不属于任何数据类型。
2、undefined
表示变量已声明,但未初始化。即表示一个变量已被声明,但还没有被赋值。当一个变量没有被明确赋值时,默认初始值是undefined。它是一个全局变量,其值在脚本的任何地方都是可用的。可将undefined视为一个预定义的值,表示未定义的变量。
简而言之,null明确表示变量为空,而undefined表示变量没有被赋值。
三、null和undefined的由来
1、 null
它最早是由C语言中的空指针演化而来。在JavaScript中,null是一个原始值,表示变量或属性的空值。当一个变量或属性被赋值为null,就表示它不指向任何有效的对象或值。
2、undefined
在JavaScript中,当声明一个变量但没有给它赋值时,此时如果需要使用这个变量,但是又需要一种状态去表示它,所以给其定义undefined。undefined也是一个原始值,表示不存在的值。
四、判断类型方法
1、typeof
尽管null被认为是一个特殊的对象类型,在JavaScript中它被赋予了自己的数据类型 - null。而undefined则表示一个未定义的值。
注意:typeof null
返回的是"object",这是一个历史遗留问题,并不是null的真实类型。因此,在判断一个变量是否为null时,最好使用严格相等操作符(===
)来进行判断
2、===