二进制和八进制表示法
- ES6提供了二进制和八进制数值的新写法,分别用前缀
0b和0o表示。
0b111110111 === 503
0o767 === 503
Number(0b111110111)
Number(0o767)
数值分隔符
- ES2021允许数值使用下划线(
_)作为分隔符。分隔符没有指定间隔位置,隔几位添加都可以。
123_00 === 12300
123_00 === 1_2300
- 数值分隔符主要是为了编码时书写数值的方便,而不是为了处理外部输入的数据。
Number('123_456')
parseInt('123_456')
静态方法
Number.isFinite()
- 检查一个数值是否为有限的。与全局的
isFinite()区别是,前者不会调用Number()进行隐式转换,只对数值有效。
isFinite(null)
Number.isFinite(null)
isFinite(true)
Number.isFinite(true)
isFinite(0)
Number.isFinite(0)
isFinite("123")
Number.isFinite("123")
Number.isNaN()
- 检查一个值是否是
NaN。只有NaN返回true,其他一律返回true。与全局的isNaN()区别是,前者不会调用Number()进行隐式转换,只对数值有效。
isNaN(undefined)
Number.isNaN(undefined)
isNaN('')
Number.isNaN('')
isNaN(NaN)
Number.isNaN(NaN)
Number.parseInt()
- 与全局的
parseInt一致,移植到Number对象上是为了逐步减少全局方法,使得语言逐步模块化。
Number.parseFloat()
- 与全局的
parseFloat一致,移植到Number对象上是为了逐步减少全局方法,使得语言逐步模块化。
Number.isInteger()
- 判断一个数值是否为整数,如果参数不是数值,则返回
false。
Number.isInteger(25)
Number.isInteger(25.1)
Number.isInteger(25)
Number.isInteger(25.0)
Number.isInteger()
Number.isInteger(null)
Number.isInteger('15')
Number.isInteger(true)
- 不是整数也会返回
true, 由于JS采用 IEEE 754 标准,数值存储为64位双精度格式,数值精度最多可以达到 53 个二进制位(1 个隐藏位与 52 个有效位)。
Number.isInteger(3.0000000000000002)
Number.isSafeInteger()
Number.isSafeInteger('a')
Number.isSafeInteger(null)
Number.isSafeInteger(NaN)
Number.isSafeInteger(Infinity)
Number.isSafeInteger(-Infinity)
Number.isSafeInteger(3)
Number.isSafeInteger(1.2)
Number.isSafeInteger(9007199254740990)
Number.isSafeInteger(9007199254740992)
Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1)
Number.isSafeInteger(Number.MIN_SAFE_INTEGER)
Number.isSafeInteger(Number.MAX_SAFE_INTEGER)
Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1)