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

    xiaoxiao2021-03-25  110

    新特性: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

    转载请注明原文地址: https://ju.6miu.com/read-25597.html

    最新回复(0)