基本数据类型
基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值。
- String
ECMAScript中,字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变,要改变某个变量保存的字符串,要先销毁原来的字符串,然后再用另一个新的值填充该变量。 - Number
- 浮点数值
数值中必须包含一个小数点,保存浮点数所需要的内存空间时整数的两倍。 对于极大或极小的数可以用e表示法,用e表示法表示的数值等于e前面的数乘以10的指数次幂。浮点数的最高精度是17位小数,但是在计算时精度远远比不上整数。例如:0.1+0.2的结果不是0.3,而是0.30000000000000004。 - 数值范围
如果某次的计算结果超出了js数值范围的值,那么这个数值将会自动转换成Infinity值。 - NaN
非数值,这个数值用来表示一个本来要返回数值的操作未返回数值的情况(这样不会抛出错误)。任何涉及NaN的操作都会返回NaN。
NaN与任何值都不相等,包括它本身。
isNaN(),用来判断是否是一个数值。 - 数值转换
Number() 可以用于任何数据类型,
parseInt() 处理整数,提供第二个参数,用来明确告知解析基数,通常都是10,解析成10进制。Number(true); // 1,false会返回0 Number(null); // 0 Number(undefined); // NaN Number(a); // NaN Number(001); // 1,会忽略前边的0
parseFloat() 解析小数时,第一个小数点是有效的。parseInt(1234a); // 1234 遇到第一个非字符停止 parseInt(22.5); // 22 parseInt(""); // NaN Number()会返回0
parseFloat(1234a); // `1234 parseFloat(22.3.4); // 22.3
- 浮点数值
- Null
只有一个值null,被认为是一个空对象指针。这也是typeof null返回Object的原因。如果定义一个变量将来用来存储对象,那么在初始化时可以把他设为null。
需要注意的是在原型链中Object.prototype.__proto__ === null
- Undefined
声明一个变量却未初始化时为undefined。需要注意的是在对一个未声明的变量进行typeof时,也返回undefined。var a; typeof a; // undefined typeof b; // undefined b并未声明 undefined == null // true undefined === null // false
- Boolean
有两个值true和false。true不一定等于1,false不一定等于0。在ECMAScript中所有类型的值都有与这两个Boolean值等价的值,可以调用Boolean()。转换规则如下
数据类型 | 转换为false | 转换为true |
---|---|---|
String | “”(空字符串) | 任何非空字符串 |
Number | 0和NaN | 任何非0数字值(包括无穷大) |
Undefined | undefined | N/A |
Object | null | 任何对象 |