数据类型
数据类型可分为:
原始值:Number Boolean String undefined null
引用值:array Object function...
1.基本类型(单类型)
- number(数字型)
- string(字符串型)
- boolean(布尔型)
- undefined(未定义型)
- null(空值型)
2.引用类型
- Object
使用typeof(被检测的内容)可以得出一个内容的类型。
console.log(typeof(-123456)); // 数字型
console.log(typeof("明天会更好")); // 字符串型
console.log(typeof(true)); // 布尔型
console.log(typeof(x)); // 布尔型
console.log(typeof([1,2,3])); // 对象
console.log(typeof({name:"张三",age:12})); // 对象
console.log(typeof(null)); // 对象
注:typeof(x)可以写成typeof x。使用小括号和空格都可以。
数字类型
Number类型使用IEE754格式来表示整数和浮点值,这也是0.1+0.2
不等于0.5的原因。
1.浮点数值
- 浮点精度丢失问题
//在进行浮点数运算的时候,可能会出现精度丢失的问题
0.1 + 0.2 = 0.30000000000000004;
0.2 + 0.2 = 0.4;
//尽量少用浮点数进行运算,不要让浮点数进行比较。
解决办法 : 根据小数点后面的位数量 乘以对应的整数;
0.1 + 0.2 ==> (0.1*10+0.2*10) / 10 = 0.3
- 浮点运算判断相等
0.1 + 0.2 = 0.30000000000000004;
0.1 + 0.2 == 0.3; // false
var ACCURACY = 1e-5; //定义精度精确到0.00001
var a = 0.1;
var b = 0.2;
var sum = 0.3; // 判断相差小于精度就认为相等
if (a + b - sum < ACCURACY) {
console.log('a+b == sum');
}
- 浮点数值范围
最小值:Number.MIN_VALUE,这个值为: 5e-324
最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
无穷大:Infinity 1/0
无穷小:-Infinity
2.NaN
NaN(Not a Number):不是一个数,但他属于数字类型。
var a = "abc";
var b = 2;
var c = a - b;
console.log(c); // NaN
在js中,NaN用来表示一个非数字的特殊值,当发现无法进行运算时,js不会报错,而是返回一个NaN。
- NaN的类型是number类型,表示一个非数字
- NaN不等于任何值,包括NaN本身
- 通过isNaN可以判断是否是一个数字,返回false的时候,表示一个数字。
>>var a = 123;
>>var b = "abc";
>>console.log(isNaN(a)); // false
>>console.log(isNaN(b)); // true
不同数据类型转化为布尔值的结果
数据类型 | 转为ture的值 | 转为false的值 |
---|---|---|
Boolean | ture | false |
String | 任何非空字符串 | (空字符串) |
Number | 任何非零数字值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
Undefined | n/a | undefined |