五,ES6为数值做的一些扩展

新特性:Number.isNaN函数

用于判断传入的是否是非数值,注意:是判断非数值,而不是判断数值,IsNaN的全称是: is not a number。

Number.isNaN(2.5); //结果:false
        由于2.5是一个number类型的数值,所以返回false(再次注意:判断是非数值,所以是false,表示2.5是一个数值类型的值)。
        那么,移植到Number对象isNaN函数和原本是全局函数的isNaN函数,有不一样的地方吗,还是仅仅简单地移植过来就完事了?
        答案:有区别。
        传统的isNaN函数会把非数值的参数转化成数值再进行判断,而Number. isNaN只对数值类型有效,非数值类型的参数一律返回false。看文字解释不过瘾,咱们看案例。
    isNaN('abc');//结果:true
    //'abc'无法转为一个数值,返回true
    Number.isNaN('abc'); //结果:false
    //'abc'是字符串,Number.isNaN不做类型转换,直接返回false
        正如上面我写的注释一样,Number下面的isNaN都懒得给字符串’abc’做类型转换,直接返回false。而ES5中的isNaN函数会对字符串’abc’进行类型转换后,发现它是一个 NaN(非数值),才返回true。
        所以我们在使用这个函数到时候还要小心,当返回false的时候,不一定就是一个数值,有可能是一个非数值类型的参数。

新特性:Number.isFinite函数 

用来检查一个数值是否非无穷。注意是判断非无穷,不是判断无穷

Number.isFinite(10)//true

Number.inFinite(Infinity)//false  Infinity是表示无穷大的特殊值

isFinite函数跟isNaN函数一样,也只是对数值类型有效,对非数值类型的参数一律返回false。

Number.isFinite("abc")//false

所以同样要注意,当Number.isFinite函数返回false的时候,参数不一定就是一个有穷的数值类型,

也有可能是一个非数值类型的参数。如:字符串’abc’。

新特性:Number.parseInt函数

解析一个字符串,返回一个整数。parseInt函数同样是从window对象下移植到Number对象下,

但是它的作用没有任何变化

parseInt('1.23asd');  //1

Number.parseInt('1.23asd')//1

新特性:Number.parseFloat函数

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

parseFloat('1.23asd');   //1.23

Number.parseFloat('1.23asd')//1.23

新特性:Number.isInteger函数 

用来判断是否是整数

Number.isInteger(1.2)//false

Number.isInteger(1)//true

不过有一点要注意:在javascript内部对整数和浮点数采用一样的存储方式,因此小数点后如果都是0的浮点数,

都会被认为是整数。看个例子就知道了

Number.isInteger(1.000000)//true

极小常量

Number.EPSILON常量:定义一个极小的数值。

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

 2.220446049250313e-16是一个极小的数值,约等于0.00000000000000022204。

干嘛要定义一个这样的数值,在什么情况下会用它呢?

        Number.EPSILON的出现是用来判断浮点数的计算误差,

如果浮点数计算得到的误差不超过Number.EPSILON的值,就表示可以接受这样的误差

安全整数

ES6引入了安全整数,js能够准确表示的数字在-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

ES6对Math对象的扩展

新特性:Math.trunc函数

用于去除一个数的小数部分,返回整数部分

Math.trunc(1.23)//1

Math.trunc(1)//1

新特性:Math.sign函数

用来判断一个数到底是正数、负数、还是零

Math.sign(3)//1

Math.sign(-3)//-1

Math.sign(0)//0

Math.sign("abc")//NaN

参数如果是正数,结果返回1;如果是负数,结果返回-1;如果是0,结果返回0;

如果是一个非数值类型的参数,结果返回:NaN。

新特性:Math.cbrt函数

用于计算一个数的立方根。

Math.cbrt(8)//2

Math.cbrt(27)//3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值