NUMBER数字数据类型

302 阅读1分钟

number数字类型

包含:常规数字,NaN

not a number:不是一个数,但他隶属于数字类型

console.log("AA"==NaN);=>false console.log(NaN==NaN);=>false

NaN和任何值,包括自己都不相对:NaN!=NaN,所以我们不能用相等的方式判断是否为有效数字

isNaN:检测一个值是否为非有效数字,如果不是有效数组返回true,反之是有效数字返回false

在使用isNaN检测的时候,首先会验证检测的值是否为数字类型,如果不是,先基于number()这个方法,把值转换为数字类型,然后检测。

isNaN([val]) console.log(10)=>false

console.log("aa")=>ture

console.log("10")=>false

number("10")=>10=>isNaN(10)=>false

把其他类型值转化为数字类型

把字符串转换为数字,只要字符串中包含任何一个非有效数字结果都是NaN,空字符串会转换为0。
  • number([val])

console.log(Number("12.5"));=>12.5

console.log(Number("12.5px"));=>NaN

console.log(Number("12.5.5"));=>NaN

console.log(Number(" "));=>0

  • 布尔转换为数字

console.log(Number("true"));=>1 console.log(Number("false"));=>0 console.log(isNaN("false"));=>false

console.log(Number(null));=>0

console.log(Number(undefined));=>NaN

把引用数据类型转换为数字,是先把它基于toString方法转换为字符串,然后在转换为数字

console.log(Number({}));=>NaN

console.log(Number([]));=>0

console.log(Number([12]));=>12

console.log(Number([12,23]));=>NaN

延伸

  • parseInt/parseFloat([val],[进制]):也是转换为数字的方法,对于字符串来说,它是从左到右依次查找有效数字,直到遇到非有效数字字符,停止查找(不管后面是否还有数字,都不找了),把找到的当作数字返回。

let str = "12.5px"

console.log(Number(str))=>NaN

console.log(parseInt(str))=>12

console.log(parseFloat(str))=>12.5