ES6学习总结之数值的扩展

1. 二进制和八进制

0b开头的数值表示二进制数;
0o开头的数值表示八进制数;

可以用Number()将二进制或八进制表示的字符串转换为十进制的数。如

Number('0b111')  // 7
Number('0o10')  // 8

2. Number.isFinite()和Number.isNaN()

Number.isFinite()用于判断某个数是否有限,对于一切非数值类型的参数,返回false;
Number.isNaN()用于判断某个数是否非数,只对非数返回true。

这两个方法与实例方法isFinite()isNaN()的区别是:

实例上的方法会先用Number()将实例转化成数值类型,然后判断有限还是非数;而这两个方法只对数值类型有用。

3. Number.parseInt()和Number.parseFloat()

这两种方法和实例上的parseIntparseFloat()完全一样。

4. Number.isInteger()

判断一个数是否为整数,也是只对数值类型有效,对于其他数值类型,返回false。

注意:若超过JS的精度范围,可能会误判。如:

Number.isInteger(3.0000000000000002) // true

5. Number.EPSILON

表示1与大于1的最小浮点数之间的差,是一个极小的常量,常用于设置能够接受的误差范围

6. 安全整数和Number.isSafeInteger()

最大整数:Number.MAX_SAFE_INTEGER
最小整数:Number.MIN_SAFE_INTEGER

7. Math对象的扩展

  1. Math.trunc()去除一个数的小数部分,返回整数部分。对于非数先用Number()转换。
  2. Math.sign()判断一个数是正数(+1)、负数(-1)还是0(+0、-0),非数先用Number()转换。
  3. Math.cbrt()计算一个数的立方根,对于非数同上。
  4. Math.clz32()将参数转为 32 位无符号整数的形式,然后返回这个 32 位值里面有多少个前导 0。
  5. Math.imul()返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
  6. Math.found()返回一个数的32位单精度浮点数形式。
  7. Math.hypot()返回所有参数的平方和的平方根。

8. 指数运算符

ES2016 新增了一个指数运算符(**)。

2 ** 2 // 4
2 ** 3 // 8

9. BigInt数据类型

ES2020引入一种新的数据类型BigInt(大整数),用于表示超出JS精度范围的整数,没有位数的限制,任何位数的整数都可以精确表示。

注意:

BigInt 类型的数据必须添加后缀n
比如:

1234 // 普通整数
1234n // BigInt

// BigInt 的运算
1n + 2n // 3n

BigInt 同样可以使用各种进制表示,都要加上后缀n
比如:

0b1101n // 二进制
0o777n // 八进制
0xFFn // 十六进制

BigInt和数值是两个数据类型,不全等。
比如:

42n === 42 // false

BigInt对象

BigInt构造函数可以生成BigInt数据类型的值,和Number()用法一样。但是,BigInt()一定要有参数,并且参数必须可以转为数值。

BigInt(123) // 123n
BigInt('123') // 123n
BigInt(false) // 0n
BigInt(true) // 1n
new BigInt() // TypeError
BigInt(undefined) //TypeError
BigInt(null) // TypeError
BigInt('123n') // SyntaxError
BigInt('abc') // SyntaxError

BigInt对象继承了Object对象的两个方法:

  • BigInt.prototype.toString()
  • BigInt.prototype.valueOf()

继承了Number对象的一个方法:

  • BigInt.prototype.toLocaleString()

还提供三个静态方法:

  • BigInt.asUintN(width, BigInt): 给定的 BigInt 转为 0 到 2width - 1 之间对应的值。
  • BigInt.asIntN(width, BigInt):给定的 BigInt 转为 -2width - 1 到 2width - 1 - 1 之间对应的值。
  • BigInt.parseInt(string[, radix]):近似于Number.parseInt(),将一个字符串转换成指定进制的 BigInt。

转换规则

可以使用Boolean()、Number()和String()这三个方法,将 BigInt 可以转为布尔值、数值和字符串类型。

Boolean(0n) // false
Boolean(1n) // true
Number(1n)  // 1
String(1n)  // "1"

内容参考:ES6——数值的扩展 作者:阮一峰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值