1 二进制和八进制新写法
类似于十六进制的0x前缀,二进制的前缀为0b,八进制为0o
0b111110111 === 503 // true,二进制
0o767 === 503 // true,八进制
2 新增的特性
1 数值分隔符
可用下划线(_)作为数值分隔符,例如想要表达1,000,则可在js中写成1_000,有三个函数不支持数值分隔符:Number()
、parseInt()
、parseFloat()
2 判断函数
1)Number.isFinite()
用于判断数值是否有限
2)Number.isNaN()
用于判断参数是否为NaN
3)Number.isInteger()
用于判断是否为正数,数据精度高时不建议使用
3 parserInt()
和parserFloat()
的移植
Number.parserInt()
和Number.parserFloat()
,之前这两个函数是放置在全局下的,es6将其放置在Number对象中,语言逐步模块化
4 JS的最小精度
Number.EPSILON是JS能够表示的最小精度,误差小于这个值即不存在误差
Number.EPSILON === Math.pow(2, -52)
// true
Number.EPSILON
// 2.220446049250313e-16
5 安全整数和Number.isSafeInteger()
JS可以准确地表示的整数范围为:-2^53 ~ 2^53,不含两个端点,超过此范围则无法精确表示,其中es6 引入了Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER这两个常量,用来表示这个范围的上下限。
函数Number.isSafeInteger()
用于判断一个整数是否在安全范围内
3 Math新增方法
1 Math.trunc()
去除一个数的小数部分,返回整数部分
2 Math.sign()
判断一个数是正、负或0,正返回+1,负返回-1,
0返回0
3 Math.cbrt()
计算一个数的立方根
4 Math.clz32()
将参数转换为32位无符号整型,并返回这个值的前导0
5 Math.imul()
返回两个参数以32位有符号整型相乘的结果,返回的结果也为32位有符号整型
6 Math.fround()
返回一个数的32位单精度浮点形式,主要用于64位双精度的转换
7 Math.hypot()
返回参数平方和的平方根
对数方面
1 Math.expm1(x)
返回e^x - 1
2 Math.log1p(x)
返回1+x的自然对数
自然对数是以e为底的
3 Math.log10(x)
返回以10为底的对数
4 Math.log2(x)
返回以2为底的对数
4 新类型BigInt
该类型的出现是因为JS存在两个数值限制,1.大于2^53 的整数无法准确表示;2.大于或等于2^1024则返回Inifinity。因此引入了BigInt,只用来表示整数,无位数限制,可准确表示,该类型与Int类似,但与普通整型是两种值,并不相等。其转换规则基本与Number()一致,将其他类型的值转为 BigInt。
BigInt(123) // 123n
BigInt('123') // 123n
BigInt(false) // 0n
BigInt(true) // 1n