JS的Undefined和Null

32 阅读1分钟

JS有6种基本数据类型,分别是Undefined、Null、Boolean、Number、String和Symbol(Symbol是ES6新增数据类型)。

使用typeof确定变量的类型

Undefined类型只有一个值undefined。变量只声明,而未进行初始化,就相当于给变量赋值undefined. 其实,一个变量声明或者未声明,typeof 返回的都是字符串"undefined"。如果变量被初始化为null,typeof操作符返回字符串"object"。

let weight // 没有初始化
let weather = null
console.log(typeof color) // color变量没有初始化,"undefined"
console.log(typeof weight) // "undefined"
console.log(typeof weather) // "object"

两者的使用

逻辑上讲,null 值表示一个空对象指针(给typeof 传一个 null 会返回"object",这点可以印证)。官方建议,在定义将来要保存对象值的变量时,使用 null 来初始化。这样,只要检查这个变量的值是不是 null 就可以知道这个变量是否在后来被重新赋予了一个对象的引用。 undefined 值是由 null 值派生而来的,因此 ECMA-262 将它们定义为表面上相等(官方就是这么规定的),如下面的例子所示:

console.log(null == undefined);  // true 

用等于操作符(==)比较 null和undefined 始终返回 true。 但是,用全等操作符(===)比较null和undefined 始终返回 false,因为它们不是相同的数据类型。

console.log(null === undefined);  // false 

所以在判断两个变量相等的时候要特别谨慎。

  • 菜鸟自学笔记,请大家多多关照。