JS基础 04-number数据类型

178 阅读1分钟

number

  • 正数(小数)
  • 0
  • 负数(小数)
  • NaN(not a number,不是有效数字 => number 类型 => isNaN 判断是否数字)
  • Infinity 无穷大

数字转换

  • Number()
  • parseInt()
  • parseFloat()
NaN == NaN  // false => 类似于 symbol

isNaN(5)  // false
isNaN('5')  // false => 先转换为数字类型,再进行检测
isNaN('AA')  // true => 先转换为数字类型,再进行检测
isNaN(Infinity)  // false

/*
 * Number
 * 判断是否有效字符,非数字类型,转换为 NaN
 * 全有效字符,转换成数字
 */  
Number('12')  // 12
Number('12.5')  // 12.5
Number('12.5.0')  // NaN
Number('12px')  // NaN
Number(true)  // 1
Number(false)  // 0
Number(null)  // 0
Number(undefined)  // NaN => Number(NaN)
Number(Symbol(12))  // Cannot convert a Symbol value to a number
Number(function(){})  // NaN
Number({x: 100})  // NaN => Number('[object object]')
Number(['10'])  // 10 => Number('10')
Number(['10, 20'])  // NaN => Number('10, 20')
Number([])  // 0 => Number('')
Number({})  // NaN => Number('[object object]')

/*
 * parseInt、parseFloat
 * 先转换成字符串,再转换成数字
 * 从左开始查找,进行数字转换,直到遇到非数字类型
 */  
parseInt('12px')  // 12
parseInt('12px12')  // 12
parseInt('width: 12px')  // NaN
parseInt('12.5px')  // 12

parseFloat('12.5px')  // 12.5

parseInt(true)  // NaN
parseInt(NaN)  // NaN
parseInt(null)  // NaN
parseInt('')  // NaN
parseInt(undefined)  // NaN

// toFixed
let n = 3.1415926;
n.toFixed(2)  // "3.14"

// Number.MAX_SAFE_INTEGER
Number.MAX_SAFE_INTEGER  // 9007199254740991 => 最大安全数
9007199254740992 == 9007199254740993  // true => 超过最大安全数,无法精确计算

// bigInt => es6数据类型
9007199254740992n == 9007199254740993n  // false

珠峰培训 - 40个小时彻底打实JavaScript基础 P13、P14