锋利的ES6 — 数值扩展
锋利的ES6 系列文章介绍ES6(ES5+)中新增的比较好用的新特性。本篇聊聊ES6对于数值的一些扩展,虽然这些并不常用,但是了解一下还是很有意思的。
目录
二进制和八进制表示法
ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b
(或0B
)和0o
(或0O
)表示
1 | var n = 0b1101 |
进制转换当然要用到Number
啦
1 | Number(0b1101, 2) // 13 |
isInteger(ES2015)
判断给定的参数是否为整数
1 | Number.isInteger(0); // true |
isNaN(ES2015)
判断一个是是否为NaN
和全局函数 isNaN()
相比,Number.isNaN()
不会自行将参数转换成数字,只有在参数是值为 NaN
的数字时,才会返回 true
,也就是说:全局isNaN方法会隐式数据类型转换为数字,转换不成功也会得到true,但是Number.isNaN不会。
1 | Number.isNaN(0 / 0) // true |
isFinite(ES2015)
判断某个值是否是有穷的,即:不是infinity
和全局的 isFinite()
函数相比,这个方法不会强制将一个非数值的参数转换成数值,这就意味着,只有数值类型的值,且是有穷的(finite),才返回 true
1 | Number.isFinite(Infinity); // false |
isSafeInteger(ES2015)
判断传入的参数值是否是一个“安全整数”(safe integer)
安全整数范围为 -(253 - 1)到253 - 1 之间的整数,包含 -(253 - 1) 和 253- 1
1 | Number.isSafeInteger(3); // true |
MAX_SAFE_INTEGER(ES2015)
这是一个属性,代表最大安全数
1 | console.log(Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1) // true |
MIN_SAFE_INTEGER(ES2015)
这是一个属性,代表最小安全数
1 | console.log(Number.MIN_SAFE_INTEGER === 1 - Math.pow(2, 53)) // true |
Number.parseInt, Number.parseFloat(ES2015)
这两个方法与全局的 parseInt
和parseFloat
函数相同,这里不再赘述
EPSILON(ES2015)
这是一个属性,表示 1 与Number
可表示的大于 1 的最小的浮点数之间的差值
EPSILON 属性的值接近于 2.2204460492503130808472633361816 x 10-16,或者 2-52
指数运算符 ** (ES2015)
ES6新增了一个指数运算符两颗星号 **
1 | console.log(2 ** 3) // 8 |
BigInt
第四阶段草案
BigInt
是一种内置对象,它提供了一种方法来表示大于 253 - 1的整数。这原本是 Javascript中可以用 Number
表示的最大数字。BigInt
可以表示任意大的整数。
可以用在一个整数字面量后面加 n
的方式或者调用BigInt
方法定义一个 BigInt
1 | var theBiggestInt = 9007199254740991n |
代码不是万能的,但不写代码是万万不能的
Dary记
-
更多干货,尽在公众号
转载请注明来源,文末有原始链接。欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 dary1112@foxmail.com
创作不易,您的打赏是我更新的动力
-
支付宝
-
微信
文章标题:锋利的ES6 — 数值扩展
文章字数:792
本文作者:Dary
发布时间:2020-03-17, 12:32:00
最后更新:2020-03-17, 12:18:23
原始链接:http://www.xiongdalin.com/2020/03/17/ES6-number/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。
Built By Dary