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)
';