大家对于
JavaScript数值
应该不会陌生,今天我们来探讨一下在ES6
中,关于数值新增什么特性。
一、Number的扩展
1.1 parseInt、parseFloat
ES6
把之前parseInt
、parseFloat
等类似的方法挂载到了Number
原型上。只能通过Number去调用这些静态方法
。
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
类型。Number.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
,Number.isNaN(NaN); // true Number.isNaN(2); // false
注意点:
这里注意
传统
的isFinite
、inNaN
和ES6
中的Number.isFinite
、Number.isNaN
有一个区别。传统的方式,程序会先把数值包装成Number
,也就是number类型,然后再进行判断,而ES6中的方式不会进行转换这一步,只能判断对应的数值。const 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
。
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的新感悟。