这是我参与8月更文挑战的第三天,活动详情查看:8月更文挑战
数据类型
ECMAScript有六种简单数据类型:Number,String,Boolean,Null,Undefined和Symbol。其中Symbol是ES6新增的。
还有一种复杂数据类型叫Object,js中有一句话叫万物皆对象,后面会详细讲到。Object是一种无序名值对的结合。
typeof操作符
在介绍各种具体的数据类型之前,不得不提到typeof操作符,因为ECMAScript的数据类型是松散的,所以需要一个操作符来确定变量的数据类型。对一个变量使用typeof操作符会返回以下字符串之一: -“undefined”表示值未定义;
- “boolean”表示值为布尔值;
- “string”表示值为字符串;
- “number”表示值为数值;
- “function”表示值为函数;
- “symbol”表示值为符号;
- “Object”表示值为对象或Null 注意,这里对null使用typeof会返回object,是因为null被认为是一个空对象的引用
Undefined类型
Undefined类型只有一个值,就是特殊值undefined,当var或者let声明了变量但是没有初始化时,就相当于给变量赋了一个值undefined。
let a;
console.log(a);//这里会打印undefined
console.log(b);//这里会报错
console.log(typeof a);//这里会打印undefined
console.log(typeof b);//这里也会打印undefined
通过上面的代码,我们会发现一个有趣的事情,未经声明的变量在调用typeof以后也会得到undefined。
Null类型
Null类型同样的只有一个值,就是特殊值null。之前在typeof操作符时提到了,对null使用typeof会返回object,这是因为null值表示一个空对象的指针。对于Null类型,我们需要记住一句话:任何时候,只要是变量保存对象,而当时又没有那个对象可保存,就要用null来填充该变量。这样便可以保持null是空对象指针的语义。
Boolean类型
Boolean类型有两个字面值:true和false。虽然Boolean类型只有两个值,但是其他所有类型的值都有相应的布尔值的等价形式,可以调用Boolean()函数将其他类型的值转换为布尔值。 转换规律如下
| 数据类型 | 转换为true的值 | 转换为false的值 |
|---|---|---|
| Boolean | true | false |
| String | 非空字符串 | ""空字符串 |
| Number | 任何非零数值 | 0和NaN(not a number) |
| Object | 任意对象 | null |
| undefined | 无 | undefined |