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
所以在判断两个变量相等的时候要特别谨慎。
- 菜鸟自学笔记,请大家多多关照。