基本数据类型:undefined、Null、Boolean、Number、String
1、Undefined类型
Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined
var message;
console.log(message == undefined); // true
包含undefined值的变量与尚未定义的变量还是不一样的
var message; //这个变量声明之后默认取得了undefined值
console.log(message) //undefined
console.log(age) //产生错误
console.log(typeof message) //undefined
console.log(typeof age) //undefined
对未初始化和未声明的变量执行typeof操作符都返回了undefined值
2、Null类型
Null类型是第二个只有一个值的数据类型,这个特殊的值是null。
var car = null;
console.log(typeof car) //object
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。
3、Boolean类型
Boolean 类型是 ECMAScript 中使用得最多的一种类型,该类型只有两个字面值: true 和 false 。
这两个值与数字值不是一回事,因此 true 不一定等于 1,而 false 也不一定等于 0
数据类型 | 转换为true的值 | 转换为false的值 |
Boolean | true | false |
String | 任何非空字符 | “”空字符串 |
Number | 任何非零数字(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
undefined | not application | undefined |
4、Number类型
Number类型应该时ECMAScript中这种类型使用IEEE754格式来表示整数和浮点数值。
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误)
- 任何涉及NaN的操作都会返回NaN
- NaN与任何值都不相等,包括NaN本身
console.log(NaN == NaN) //false
数值转换
Number() 函数的转换规则如下。
- 如果是 Boolean 值, true 和 false 将分别被转换为 1 和 0。
- 如果是数字值,只是简单的传入和返回。
- 如果是 null 值,返回 0。
- 如果是 undefined ,返回 NaN 。
- 如果是字符串,遵循下列规则:
- 如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即 "1"会变成 1, "123" 会变成 123,而 "011" 会变成 11(注意:前导的零被忽略了);
- 如果字符串中包含有效的浮点格式,如 "1.1" ,则将其转换为对应的浮点数值(同样,也会忽略前导零);
- 如果字符串中包含有效的十六进制格式,例如 "0xf" ,则将其转换为相同大小的十进制整数值;
- 如果字符串是空的(不包含任何字符),则将其转换为 0;
- 如果字符串中包含除上述格式之外的字符,则将其转换为 NaN 。
- 如果是对象,则调用对象的 valueOf() 方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN ,则调用对象的 toString() 方法,然后再次依照前面的规则转换返回的字符串值。
Number()函数在转换字符串时比较复杂而且不够合理,因此在处理整数的时候更常用的是parseInt(),其在转换字符串的时候,更多的是看其是否符合数值模式
parseInt() 提供了第二个参数:转换时使用的基数(即多少进制)。
5、String类型
ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。
数值、布尔值、对象和字符串值都有toString()方法。但null和undefined值没有这个方法。
在调用数值的toString()方法时,可以传递一个参数:输出数值的基数。
在不知道要转换的值是不是null或undefined的情况下,还可以使用转型函数String()这个函数能够将任何类型的值转换为字符串。