记录关于js数据类型的知识点。细碎,随时补充。
1. js中5种简单数据类型:Undefined、Null、Boolean、Number和String。一种复杂数据类型:Object里面包含的 function、Array、Date。
2. 获取数据类型:typeof 变量 例:let a=1 console.log(typeof a) //number
3. Number类型范围 console.log(Number.MAX_VALUE)//1.7976931348623157e+308 console.log(Number.MIN_VALUE)//5e-324
js浮点数计算精度不准确如:let x=0.1 let y=0.2 console.log(x+y)//0.300000000000000004,这是因为计算机运算时转为二进制数
0.1 => 0.0001 1001 1001 1001..(无限循环)
0.2 => 0.0011 0011 0011 0011…(无限循环)
其实对于浮点数的四则运算,几乎所有的编程语言都会有类似精度误差的问题,只不过在 C++/C#/Java 这些语言中已经封装好了方法来避免精度的问题,而 JavaScript 是一门弱类型的语言,从设计思想上就没有对浮点数有个严格的数据类型,所以精度误差的问题就显得格外突出。
解决办法一个是先四舍五入一下但会损失精度,另一个为先将浮点数转为整数计算后再转回去。
NaN:Not a Number的缩写,一般这样几种情况:0/0,Inf/Inf,Inf-Inf,Inf*0 使结果不确定导致出现NaN,NaN不与任何数相等,包括它本身。需要判断一个值是否为NaN,使用isNaN()。传入不是数字为真,是数字为假。
4. 类型转换
其他类型转数字:parseInt() parseFloat() Number()
其他类型转字符串:toString() toString不能转null,undefined这类值,会产生报错
其他类型转布尔:Boolean()
==比较值是否相等不比较类型
===比较值和类型是否都相等