JavaScript:基本(原始)数据类型一 :Null、Undefined、Boolean、Number
- 在JavaScript中目前有6种基本数据类型:Boolean、String、Number、null、undefind、Symbol
null、undefined是JS中比较特殊的数据类型只有一个值、也是JS中最简单的数据类型。
- undefined 表示没有定义(初始化)任何的值
- 当使用var或let 声明变量没有初始化的时候 就相当于给变量赋予了undfined
- null 是一个空指针的对象 这也是typeof null 会返回 “Object” 的原因
- 在定义将要保存的变量是对象值时,建议使用unll 来初始化
- undefined 值是由null值派生而来,它们定义为表明上相等
console.log(null == undefined) // true console.log(null === undefined) // false
布尔(boolean)拥有两个值true 和 false
- 可以用Boolean() 将任何值转化为布尔值
- false: +0, -0, null, undefined,NaN, 空字符串("")
- true : 除了以上初始值为false,其他都是true,包括空对象、空数组、字符串"false" 、非零数值(包括正负无穷)
Number、Bigint
JS中的数字类型使用IEEE754的64位浮点类型:最大的安全整数 2的53次方 - 1
- 使用:
new Number(value);
var a = new Number('123'); // a === 123 is false
var b = Number('123'); // b === 123 is true
a instanceof Number; // is true
b instanceof Number; // is false
-
浮点值
- 小数点前面不是必须用整数,但推荐加上
let floatNum1 = 1.1 let floatNum2 = 0.1 let floatNum3 = .1 // 有效单不推荐 let floatNum4 = 1. // 忽略小数点 let floatNum5 = 10.0 // 处理为整数
- 浮点数精确度最高为17为小数 但算数计算中远不如整数精确
之所以存在这种舍入错误是因为使用了IEEE754数值,这种错误非JS独有
// 0.1+0.2 不等于0.3 0.1+0.2=0.300 000 000 000 000 04
-
值得范围
- 最小值:Number.MIN_VALUE 多数浏览器中是5e-324 - Infinity
- 最大值:Number.MAX_VALUE 超出这个范围 转换为 Infinity
- 检测是否在最大与最小值之间 使用 isFinite()
-
NaN
- 任何涉及NaN的操作始终返回NaN
- NaN不等于包含NaN在内的任何值 可以是用isNaN函数判断一个数值是否为NaN
console.log(0/0) // NaN console.log(-0/+0) // NaN console.log(5/0) // Infinity console.log(5/-0) // - Infinity
-
数值的转换
- 数值类型转换有三个方法:Number()、parseInt()、parseFloat()
- Number() 执行转换规则
- 布尔值 true -> 1 ; false -> 0
- 数值 直接返回
- null, 返回 0
- undefined -> NaN
- 字符串:
- 包含数值(包括带加、减号)转换为十进制数值 忽略前面0
- 包含有效浮点数 转换为相应的整数、小数点不是有效数值
- 包含十六进制格式 如"0xf" 转换为十六进制整数
- 空字符串 返回0
- 其他情况返回 NaN
- 对象,先调用valueOf() 然后按上述规则转换,如果返回NaN 会继续调用toString() 按转换字符串规则转换
- parseInt() 更专注于字符串是否包含数值模式
- 忽略前面空格,从第一个非空字符开始:不是数值(数值可以包含加减号) 返回NaN
- 空字符串返回NaN
- 如果第一个字符是数值(数值可以包含加减号)则依次匹配,返回直到遇到非数值字符
- 可以传入第二个参数指定底数(进制数)
parseInt(" 1234blue") // 返回 1234 parseInt("22.5") // 返回 22 小数点不是有效数值 parseInt("") // NaN parseInt("0xA") // 10 解释为十六进制 parseInt("AF", 16) // 十六进制 175 parseInt("AF") // NaN parseInt("10", 2) //按二进制解析
- parseFloat() 与parseInt() 类似 但只解析十进制
parseFloat("0.43Bul") // 返回 0.43 parseFloat("22.34.5") // 返回 22.34
参考
- MDN: developer.mozilla.org/zh-CN/docs/…
- 书籍:红宝书三、四版 -《javascript高级程序设计》