大家对于
JavaScript数值应该不会陌生,今天我们来探讨一下在ES6中,关于数值新增什么特性。
一、Number的扩展
1.1 parseInt、parseFloat
ES6把之前parseInt、parseFloat等类似的方法挂载到了Number原型上。只能通过Number去调用这些静态方法。
js
const num = 123;
const num1 = '12.3';
parseInt(num); // 123
Number.parseInt(num); // 123
parseFloat(num1); // 12.3
Number.parseFloat(num1); // 12.3
此时发现二者打印的结果是相同的,注意此时打印的结果类型是number,这样做的目的其实就是为了使我们的语言更具模块化。
1.2 isFinite、isNaN
-
isFinite是判断值是否为有限数值,它只能判断number类型。jsNumber.isFinite(5); // true Number.isFinite(0.6); // true Number.isFinite('12'); // false Number.isFinite('foo'); // false Number.isFinite(NaN); // false Number.isFinite(Infinity); // false Number.isFinite(false); // false -
isNaN顾名思义,就是判断值是否为NaN,jsNumber.isNaN(NaN); // true Number.isNaN(2); // false注意点:
这里注意
传统的isFinite、inNaN和ES6中的Number.isFinite、Number.isNaN有一个区别。传统的方式,程序会先把数值包装成Number,也就是number类型,然后再进行判断,而ES6中的方式不会进行转换这一步,只能判断对应的数值。jsconst num = 12; const str = '12'; isFinite(num); // true isFinite(str); // true Number.isFinite(num); // true Number.isFinite(str); // false isNaN(NaN); // true isNaN('NaN'); // true Number.isNaN(NaN); // true Number.isNaN('NaN'); // false所以我们如果使用到了ES6这两个方法要格外注意。
1.3 isInteger
该
方法用来判断数值是否为整数,但是这里我们要注意,在JavaScript中呀,整数和浮点数是相同的存储方法,所以在开发中,你可能会发现6 === 6.0为true。
js
const num = 6;
const num1 = 6.0;
Number.isInteger(num); // true
Number.isInteger(num1); // true
二、Math对象
Math对象对我们的编程很重要,像我们可能用过
圆周率(Math.PI)、绝对值(Math.abs)、三角函数、幂次方(Math、pow)、随机数(Math.random)等等,ES6中又新增了一些新方法,但是大多数可能用的不太多,所以这里我就贴一下MDN:Math文档,大家可以自行查阅。
三、总结
ES6对于数值的扩展,可能注意的不是太多对于我来说,可能如果是偏向算法类的工程师,可能会使用到很多像Math中那些新增的方法,我这里概括的不是很全面,只是写了一些自己对于ES6的新感悟。