复习ES6(四):数值的扩展
二进制与八进制表示法
ES6 提供了二进制和八进制数值的新的写法,分别用前缀 0b(或 0B)和 0o(或 0O)表示
1 | 0b111110111 === 503; // true |
Number.isFinite()/Number.isNaN()
Number.isFinite()用来检查一个数值是否为有限的(finite),即不是 Infinity.
如果参数类型不是数值,Number.isFinite 一律返回 false
1 | Number.isFinite(15); // true |
Number.isNaN()用来检查一个值是否为 NaN
它们与传统的全局方法 isFinite()和 isNaN()的区别在于,传统方法先调用 Number()将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效
1 | isFinite(25); // true |
Number.parseInt(), Number.parseFloat()
ES6 将全局方法 parseInt()和 parseFloat(),移植到 Number 对象上面,行为完全保持不变
Number.isInteger()
Number.isInteger()用来判断一个数值是否为整数
Number.EPSILON
常量,根据规格,它表示 1 与大于 1 的最小浮点数之间的差
Number.EPSILON 实际上是 JavaScript 能够表示的最小精度。引入一个这么小的量的目的,在于为浮点数计算,设置一个误差范围。
Number.EPSILON 可以用来设置“能够接受的误差范围”。比如,误差范围设为 2 的-50 次方(即 Number.EPSILON * Math.pow(2, 2)),即如果两个浮点数的差小于这个值,我们就认为这两个浮点数相等
1 | function withinErrorMargin(left, right) { |
安全整数和 Number.isSafeInteger()
JavaScript 能够准确表示的整数范围在-2^53 到 2^53 之间(不含两个端点),超过这个范围,无法精确表示这个值。
ES6 引入了 Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 这两个常量,用来表示这个范围的上下限
Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内。
1 | Number.isSafeInteger(9007199254740990); // true |
Math 对象的扩展
指数运算符
ES2016 新增了一个指数运算符(** )
1 | 2 ** 2; // 4 |
BigInt 数据类型
为了与 Number 类型区别,BigInt 类型的数据必须添加后缀 n
1 | const a = 2172141653n; |
BigInt 对象
1 | BigInt(123); // 123n |
1 | Boolean(0n); // false |