JavaScript数据类型分为两大类,一类简单数据类型,二类复杂数据类型
简单数据类型
①Undefined
当使用var和let声明了变量但没有初始化时,就相当于给变量赋值了undefined值。
字面值 undefined主要用于比较,而且在 ECMA-262 第 3 版之前是不存在的。增加这个特殊值的目的就是为了正式明确空对象指针(null)和未初始化变量的区别。
无论是声明还是未声明,typeof 返回的都是字符串"undefined"
②Null
逻辑上讲,null值表示一个空对象指针,这也是给typeof传一个null会返回"object"的原因。
在定义将来要保存对象值的变量时,建议使用 null 来初始化,不要使用其他值。这样,只要检查这个变量的值是不是 null 就可以知道这个变量是否在后来被重新赋予了一个对象的引用,比如:
if ( car != null) {
//car是一个对象的引用
}
undefined 值是由 null 值派生而来的,因此 ECMA-262 将它们定义为表面上相等,如下面的案例:
console.log(null == undefined); // true
用等于操作符(==)比较 null 和 undefined 始终返回 true。但要注意,这个操作符会为了比较 而转换它的操作数
③Boolean
注意,布尔值字面量 true 和 false 是区分大小写的,因此 True 和 False(及其他大小混写形式)是有效的标识符,但不是布尔值。要将一个其他类型的值转换为布尔值,可以调用特定的 Boolean()转型函数。
数据类型 | 转换为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
String | 非空字符串 | ""(空字符串) |
Number | 非零整数(包括无穷值) | 0丶NaN |
Object | 任意对象 | null |
Undefined | N/A(不存在) | undefined |