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;
数学方法不讲
网友评论