[译]ES6 中你应该知道的 Numbers 用法

本文翻译自:What You Should Know About Numbers in ES6 JavaScript

在 JavaScript 中,数据类型 Number 被应用在很多地方。自 ES6 起,Number 有了大量地改进来帮助开发者提升开发效率。下面是 ES6 为我们带来的几个新特性。

二进制与八进制直接量

对新人来讲,开发者现在能够在 ES6 中使用前缀来表达不同的数字系统。

表达二进制数字使用 0b 前缀,使用 00 前缀表达八进制数字(译注:都是数字 0)。

Number.isNaN

Number.isNaN 与它的全局函数不同。它不会在比较前通过 Number(value) 作数字类型转换。

只有数值确实是 NaN 时 Number.isNaN 才会返回真。

蛋疼的是 typeof NaN === 'number',所以 typeof NaN === 'number' 并不能精准地告诉你值是否是一个数字。它只告诉你该值属于数字,也包括了 NaN。

因此更精确的判断方式是:

typeof value === 'number' && !Number.isNaN(value)

当然,其它处理数字是否被错误描述的方式包括 Number(x) === x 将只在数字时返回 true。

Number.isFinite

Number.isFinite 同样与全局的 isFinite 有些区别,Number.isFinite 不会在计算前通过 Number(value) 作数字类型转换。

例如,非数字在类型转换时会等于 0(Number(null) === 0)。

这种情况下 Number.isFinite 更高级一些。

Number.isInteger

这是 ES6 的新功能,它可以检测一个数字是否是整数。不需要用 Number(value) 作类型转换,非数字例如 null 会直接返回 false。

Number.parseInt, Number.parseFloat

Number.parseIntNumber.parseFloat 跟他们的全局函数表现一毛一样。

Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER

它们表述了在 JavaScript 的实现里,可以安全使用的最大/最小数值。它由 IEEE 浮点限制(IEEE 754)在 2⁵³-1。

当然,最小安全整数是最大值的负值。要记住电脑在内存里是如何存储数字的。

Number.isSafeInteger

Number.isSafeInteger 直接返回提供的值是否位于上面的最大/最小值之间。

Number.EPSILON

在 JavaScript 里,当浮点数在系统里不能被精确描述时会触发取整误差。例如,.1 加 .2 不等于 .3!

Number.EPSILON 提供了一个可接受的误差范围用来计算(译注:Number.EPSILON 属性表示数字 1 和在 JavaScript 里大于 1 的最小数值之间的差值,详见 MDN)。所以可以用来检测计算误差是否处于可接受的范围,就像这样:


在 ES6 中,Numbers 有了长足的进步,并且仍有不少进步的空间,像这样的增强也帮助 ES6 变的比以往的 JavaScript 版本更优秀。(卧槽,这就忽然写结束语了?好 TM 突然!)

-- EOF --

此条目发表在 前端开发 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

评论功能已关闭。