8、数字
最后更新于:2022-04-02 06:07:08
## 一、进制
ES6不仅完善了数字的八进制形式,还补充了一种十六进制形式,并且添加了全新的二进制形式。下面的三个变量分别表示八进制、十六进制和二进制的10,注释中给出了该进制的另一种写法。
~~~
var octal = 0o12, //或0O12
hex = 0xa, //或0XA
binary = 0b1010; //或0B1010
~~~
注意,只有十进制才能表示小数。
## 二、Number
ES6不仅增强了Number对象处理数字的精度,还扩展了它的数字运算能力,新增的属性和方法如表2所示。
:-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/27/05/2705e7c8a78165b4d7c83f188a20f54d_1375x593.png)
表2 Number的属性和方法
表中的安全整数是指处在MIN\_SAFE\_INTEGER和MAX\_SAFE\_INTEGER之间的整数。
在全局对象中有两个全局函数也叫isFinite()和isNaN(),但它们会先将传入的参数转换成数字,再进行判断,而Number对象中的新方法却不会执行这步类型转换,因此新方法能得到更为准确的结果。下面会分别对新方法和全局函数传入相同的参数,从它们的结果可知,新方法得到了期望值,而全局函数并没有。
~~~
Number.isFinite(null); //false
isFinite(null); //true
Number.isNaN("abc"); //false
isNaN("abc"); //true
~~~
## 三、Math
ES6为Math对象新增了6个三角函数、4个对数方法,以及多个算术方法,具体如表3所示。
:-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/5f/35/5f3555ca29110bf80b54438ade6b47e0_1263x1097.png)
:-: 表3 Math的方法
clz32()方法的描述比较抽象,现在用一个例子来讲解,先将10转换成32位的二进制,得到1010(省略了前面的28个0),再调用clz32()方法,最终的结果为28。
~~~
Math.clz32(10); //28
~~~
sign()方法有5种返回值,分别是1、-1、0、-0和NaN,代表正数、负数、正零、负零和NaN,具体如下所示。
~~~
Math.sign(2); //1
Math.sign(-2); //-1
Math.sign(0); //0
Math.sign(-0); //-0
Math.sign(NaN); //NaN
~~~
*****
> 原文出处:
[博客园-ES6躬行记](https://www.cnblogs.com/strick/category/1372951.html)
[知乎专栏-ES6躬行记](https://zhuanlan.zhihu.com/pwes6)
已建立一个微信前端交流群,如要进群,请先加微信号freedom20180706或扫描下面的二维码,请求中需注明“看云加群”,在通过请求后就会把你拉进来。还搜集整理了一套[面试资料](https://github.com/pwstrick/daily),欢迎浏览。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2e1f8ecf9512ecdd2fcaae8250e7d48a_430x430.jpg =200x200)
';