null和undefined总是会放在一起讲,虽然说他们完全不是一个东西,但是很多人都不是很能准确地,简单地区分他俩。但是其实,他们确实又有些相同。

一: null和undefined不同

1: 类型不行
首先,null和undefined是JS基本类型里面的两种类型,而且他俩都很特殊。因为在undefined这个类型里面就只有undefined这个值,在null这个类型里面就只有null这个值。

2:表示的意义和概念不同
undefined: 表示没有初始化
null: 表示不可用,不存在

二: null和undefined的相同和联系

1: 使用==的时候,二者相等

null == undefined; //true

2:== undefined 和 == null的功能一样
x == undefined x为undefined或者null,结果都是true
x == null x为undefined或者null,结果也都是true

三:== null或者== undefined的适用场景

我们可以使用== null 或者 == undefined来检查对象,例如
let info = {age: 10}
info.name; //undefined
所以,我们可以使用:

if(info.name == null/undefined){// do something}

四:== null或者== undefined的不适用场景
不能把 == null或者 == undefined用于根级别检查。 根级别检查可以理解为不是对象上的属性,而是独立的变量的检查。例如一个从未定义的变量,如果使用它,那么它既不是null也不是undefiend, 而是会得到一个error:

xname; //Uncaught ReferenceError: xname is not defined

但是奇特的是,对于这个没有定义过的变量,如果我们使用typeof的话,会得到’undefined‘:
typeof xname; // 'undefined'
所以,对于根级别的检查,我们一般使用typeof:

if(typeof xname == 'undefined'){//do something}

nanaistaken
583 声望43 粉丝