ES6之数值类型(number)

来源:互联网 发布:女士皮鞋品牌 知乎 编辑:程序博客网 时间:2024/05/19 02:00

新特性:Number.isNaN函数

传统的isNaN函数会把非数值的参数转化成数值再进行判断,而Number.
isNaN只对数值类型有效,非数值类型的参数一律返回false。当返回false的时候,不一定就是一个数值,有可能是一个非数值类型的参数。

    isNaN('abc');//结果:true    //'abc'无法转为一个数值,返回true    Number.isNaN('abc'); //结果:false    //'abc'是字符串,Number.isNaN不做类型转换,直接返回false

新特性:Number.isFinite函数

Number.isFinite函数:用来检查一个数值是否非无穷。注意第二行代码的参数:Infinity,Infinity是window对象下的一个常量,表示一个无穷数。所以第二行代码会返回false。此外,isFinite函数跟isNaN函数一样,也只是对数值类型有效,对非数值类型的参数一律返回false。

    Number.isFinite(1);    //结果:true,数值1是有穷,即非无穷    Number.isFinite(Infinity);    //结果:false,Infinity表示无穷大的特殊值    Number.isFinite('abc'); //结果:false

新特性:Number.parseInt函数

parseInt函数:解析一个字符串,返回一个整数。parseInt函数同样是从window对象下移植到Number对象下,但是它的作用没有任何变化。

    //传统用法:    parseInt('12.3abc');      //结果:返回数值12    //ES6用法:    Number.parseInt('12.3abc');    //结果:返回数值12

新特性:Number.parseFloat函数

parseFloat函数:解析一个字符串,并返回一个浮点数。跟parseInt一样,被移植到Number对象下,作用保持不变。

    //传统用法:    parseInt('12.3abc');    //结果:返回数值12    //ES6用法:    Number.parseInt('12.3abc');    //结果:返回数值12

以上4个函数都是在window对象下,移植到了Number对象下,这么做的目的是慢慢地减少全局性的函数,把全局函数合理地规划到其他对象下,渐渐实现语言的模块化。


新特性:Number.isInteger函数

Number.isInteger函数:用来判断是否是整数。
在javascript内部对整数和浮点数采用一样的存储方式,因此小数点后如果都是0的浮点数,都会被认为是整数。
数值3.0和3.00都会被认为是整数。

    Number.isInteger(3.2);    //结果:false    Number.isInteger(3);    //结果:true    Number.isInteger(3.0);    //结果:true    Number.isInteger(3.00);    //结果:true

极小常量

Number.EPSILON常量:定义一个极小的数值。
2.220446049250313e-16是一个极小的数值,约等于0.00000000000000022204。干嘛要定义一个这样的数值,在什么情况下会用它呢?Number.EPSILON的出现是用来判断浮点数的计算误差,如果浮点数计算得到的误差不超过Number.EPSILON的值,就表示可以接受这样的误差。

    console.log(Number.EPSILON);    //结果:2.220446049250313e-16

安全整数

ES6为我们引入了安全整数的概念。JavaScript能够准确表示的整数范围在-2^53到2^53之间,超过这个范围,无法精确表示这个值。故称之为不安全。
为此,ES6定义了两个常量来表示这个范围的最大值和最小值:Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER。此外,如果给你一个数值,你不知道它是否超出了这个安全范围,你可以使用ES6给我们新增的一个函数Number.isSafeInteger来进行判断。看例子:

    Number.isSafeInteger(Number.MAX_SAFE_INTEGER);    //结果:true    Number.isSafeInteger(Number.MAX_SAFE_INTEGER+1);    //结果:false

我们用最大安全整数Number.MAX_SAFE_INTEGER来做试验,第一行代码的结果返回的值是true,也就表示Number.MAX_SAFE_INTEGER属于安全范围,第二行代码,我们对Number.MAX_SAFE_INTEGER进行了+1,相加后的数值超过安全范围,isSafeInteger函数就返回了false,表示不在安全范围内。


新特性:Math.trunc函数

Math.trunc函数:用于去除一个数的小数部分,返回整数部分。

    Math.trunc(3);    //结果:3    Math.trunc(3.1);    //结果:3

新特性:Math.sign函数

Math.sign函数:用来判断一个数到底是正数、负数、还是零。

    Math.sign(3);    //结果:1    Math.sign(-3);    //结果:-1    Math.sign(0);    //结果:0    Math.sign('abc');    //结果:NaN

新特性:Math.cbrt函数

Math.cbrt函数:用于计算一个数的立方根。

    Math.cbrt(8);    //结果:2    Math.cbrt(27);    //结果:3

除了这三个函数以外,剩下的新增函数都是一些高中时期的数学方法,只不过是ES6将他们的运算封装成一个方法,方便大家使用,也算是开发者的福音。
它们分别是:
Math.acosh(x) 返回 x 的反双曲余弦。
Math.asinh(x) 返回 x 的反双曲正弦。
Math.clz32(x) 返回 x 的 32 位二进制整数表示形式的前导 0的个数。
Math.sinh(x) 返回x的双曲正弦。
Math.cosh(x) 返回 x 的双曲余弦。
Math.expm1(x) 返回 eˆx - 1。
Math.fround(x) 返回 x 的单精度浮点数形式。
Math.hypot(…values)返回所有参数的平方和的平方根。
Math.imul(x, y) 返回两个参数以 32 位整数形式相乘的结果。
Math.log1p(x)返回 1 + x 的自然对数。
Math.log10(x) 返回以 10 为底的x的对数。
Math.log2(x) 返回以 2 为底的 x 的对数。
Math.tanh(x) 返回 x 的双曲正切。

这么多数学方法,估计很多人都会懵逼,根本记不住这么多,但是没关系,我们也不需要去死记硬背它们,我们只需要记住ES6为Math对象扩展了很多数学方法就可以了。等真正使用到的时候,我们再去查找资料就可以了。

原创粉丝点击