js中的数据类型
number类型包括以下值:正数、负数、0、小数、NaN、infinity
注意:NaN(不是一个有效数字)、infinity(无穷大)是属于number类型
扩展:NaN和谁都不相等,包括它自己。即 NaN == 任何值 都为false
那如何判断一个数据是否为有效数字?
答案:使用 isNaN(值) 如果不是一个有效数字则为true,否则为false
类型检测
数据类型检测方法:
- typeof: 检测数据类型的逻辑运算符
- instanceof:检测是否为某个类的实例
- constructor:检测构造函数
- Object.prototype.toString.call: 检测数据类型
typeof检测:
写法:typeof 值
结果:返回的结果都是字符串,即 “数据类型”
局限性:
- typeof null 结果为 “object”
- typeof 不能细分对象类型(即普通对象{} 和数组[] 等都是"object")
类型转换
- 强转换(基于底层机制转换):Number(值)
一些隐式转换都是基于Number完成的,
如:isNaN()、数学运算(如-)双等号(==)都会调用Number方法 - 弱转换(基于一些额外的方法转换)parseInt()/parseFloat()
注:
(1)、Number()不要求传入的值一定是字符串,以下几个特殊值需记住:
如果传入的值是字符串,则必须保证值都是有效数字才会转换为数字,否则都是NaN
(2)、parseInt()、parseFloat()要求传入的值一定都是字符串,从字符串的左侧开始查找有效数字字符,遇到非有效数字字符则停止查找,并将之前转换的结果返回。
如果传入的值不是字符串,则会自动转换为字符串再开始查找。
parseInt()、parseFloat()两者区别在于能否识别小数点。