JS红宝书学习-第3章 语言基础 --数据类型_Null

3.4 数据类型

1.Null类型
Null类型同样只有一个值,即特殊值null。逻辑上,null表示一个空指针对象,这也是给typeof传入一个null会返回“object”的原因:

let car = null;
console.log(typeof car);	// "object"

在此处建议当我们将来要保存对象值的变量时,可以使用null值来进行初始化,不要使用其他值。这样我们就只需要检查是否为null就知道此值是否被重新赋予一个对象的引用,比如:

if(car != null){
  // car是一个对象的引用
}

在上篇随笔中我备注了未声明是变量的typeof为undefined,这个我理解的是它指向了空。原因是undefined值是有null值派生出来的,因此ES中将他们定义为便面上相等:

let age,car = null;
console.log(age == car);	// true

// 也可以看做
console.log(undefined == null);	//true

用等于操作符(==)比较时会始终返回true,但是这个操作符,会为了比较而进行类型转换。

即便他俩可以相等,但是在使用用途上却是不同的,如之前所说,undefined是为了变量声明但未初始化,而null是为了变量要保存对象,而当时有没有对象可保存,要用null来填充对象。这样就可以保持null是空对象至深的语义,并且区分两者的目的,以及使用场景。

null是一个假值。因此如果需要,我们可以更简洁的方式检测它,但是同样还有很多其他的假值,所以我们要明白使用的目的是检测null这个字面量,而不是假值。

let message = null;
let age;

if (message) {
  // 这个块不会执行
}

if (!message) {
  // 这个块会执行
}

if (age) {
  // 这个块不会执行
}

if (!age) {
  // 这个块会执行
}

加油。

posted @ 2021-07-14 17:09  MrChuanlinAndYaFei  阅读(73)  评论(0)    收藏  举报