(四)数值的扩展

1、知识点回顾

// 解构
const { max, min } = Math;
const { isNaN, isFinite } = Number;
console.log(max(3,4,2));
console.log(min(3,4,2));
const abc = NaN;
console.log(isNaN(abc));
const isNAN = isNaN(abc)
if(isNAN) {
    console.log(!isNAN?'max':'min');
    console.log(Math[!isNAN?'max':'min'](...[12,34,11,22,44]));
}
console.log(max.apply(null,[12,34,11,22,44]));
console.log(max(...[12,34,11,22,44]));

2、二进制和八进制表示法

ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。

0b111110111 === 503 // true
0o767 === 503 // true
const num = 0b111110111;
console.log(num);

如果要将0b和0o前缀的字符串数值转为十进制,要使用Number方法。

Number('0b111')  // 7
Number('0o10')  // 8

2、Number.isFinite(), Number.isNaN()

提问
它们与传统的全局方法isFinite()和isNaN()的区别在于,传统方法先调用Number()将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,Number.isFinite()对于非数值一律返回false, Number.isNaN()只有对于NaN才返回true,非NaN一律返回false。

3、Number.parseInt(), Number.parseFloat()

ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。
这样做的目的,是逐步减少全局性方法,使得语言逐步模块化。

Number.parseInt === parseInt // true
Number.parseFloat === parseFloat // true

4、Number.isInteger()

Number.isInteger()用来判断一个数值是否为整数。
JavaScript 内部,整数和浮点数采用的是同样的储存方法,所以 25 和 25.0 被视为同一个值。

Number.isInteger(25) // true
Number.isInteger(25.0) // true

5、Number.EPSILON

提问

6、安全整数和 Number.isSafeInteger()

JavaScript 能够准确表示的整数范围在-253到253之间(不含两个端点),超过这个范围,无法精确表示这个值。

7、注意事项

console.log(isFinite()===Number.isFinite());
console.log(isInteger()===Number.isInteger());

全局方法和数值方法的异同
我们应该推荐哪种方法呢?

Number.
或者
const { isFinite, isInteger } = Number;

数学方法不讲

你可能感兴趣的:((四)数值的扩展)