(1)二进制和八进制
ES6新增二进制(0b或者0B),八进制(0o或者0O)来表示数值:
0b111110111 === 503 // true
0o767 === 503 // true
将其他进制转为十进制,使用Number方法:
Number('0b111') // 7
Number('0o10') // 8
(2)Number.isFinite(), Number.isNaN()
ES6在Number对象上,新增加两个方法:
Number.isFinite():是否有限;
Number.isNaN():是否是NaN;
Number.isFinite(15); // true Number.isFinite(Infinity); // false
Number.isNaN(NaN) // true Number.isNaN(15) // false
与已有全局isFinite()和isNaN()在于不会转为数值,非数值一律false:
isFinite("25") // true
Number.isFinite("25") // false
全局会默认调用Number方法,先转为数值,新增加的方法不会。
(3)Number.parseInt(), Number.parseFloat()
ES6将全局方法parseInt()和parseFloat(),移植到Number对象上面:
parseInt('12.34') // 12
Number.parseInt('12.34') // 12
(4)Number.isInteger()
ES6新增Number.isInteger() ,来判断是否是整数,同样只对数值有效:
Number.isInteger(25) // true
Number.isInteger(25.0) // true
Number.isInteger("15") // false
(5)Number.EPSILON
新增加一个极小常量:Number.EPSILON
Number.EPSILON // 2.220446049250313e-16
由于浮点数计算,存在误差:
0.1 + 0.2 // 0.30000000000000004
0.1+0.2-0.3 // 5.551115123125783e-17
如果这个误差小于这个常量,我们可以认为是正确答案:
5.551115123125783e-17 < Number.EPSILON // true
因此,Number.EPSILON的实质是一个可以接受的误差范围。
(6)Number.isSafeInteger()
JavaScript能够准确表示的整数范围在-2^53到2^53之间(不含两个端点)
超过这个范围,无法精确表示这个值;
因此,ES6新增Number.isSafeInteger()方法,来判断一个整数是否落在这
个范围内。
Number.isSafeInteger(9007199254740990) // true
Number.isSafeInteger('9007199254740990') // false
只限数值,且只是整数
(7)Math对象的扩展
新增的与数学相关的方法,只是静态方法,只能在Math对象上调用,以下
方法都会先使用Number()转化为数值:
Math.trunc() 去除小数,返回整数;
Math.sign() 判断一个数是正数、负数、还是零:
参数为正数,返回+1;
参数为负数,返回-1;
参数为0,返回0;
参数为-0,返回-0;
其他值,返回NaN。
Math.cbrt() 返回参数的立方根;
Math.clz32() js用32位二进制形式表示,此方法返回1个数的前导0有多少:
Math.clz32(1) // 31
Math.clz32(1000) // 22
对于小数,此方法只考虑整数部分。
Math.clz32(3.2) // 30
Math.imul() 返回2个数相乘的结果:
Math.imul(2, 4) // 8
Math.hypot() 返回所有参数平方和的平方根:
Math.hypot(3, 4); // 5
(8)指数运算符
ES6新增指数预算符:**,与Math.pow() 相同:
2 ** 2 // 4 2 ** 3 // 8
Math.pow(2,2) //4
指数运算符可以与等号结合,形成一个新的赋值运算符(**=)
let b = 4;
b **= 3;
// 等同于 b = b * b * b;
浙公网安备 33010602011771号