你可能会错过的ES6数字和数学功能
ES6引入了各种数学和数字方法以及属性。在本文中,我们将介绍一些我们可能错过的有用的 Number
和 Math
属性。
新 Number 属性
Number
对象具有我们可以使用的新属性和方法。
Number.EPSILON
Number.EPSILON
属性用于比较浮点数是否在四舍五入误差的公差值内。它是一个只读属性。
它表示1与大于1的最小浮点数之间的差。
例如,我们可以编写以下代码来使用它:
const result = Math.abs(0.3 - 0.4 + 0.1);console.log(result); // 2.7755575615628914e-17
console.log(result < Number.EPSILON); // true
0.3 - 0.4 + 0.1
应该为 0
,但是由于JavaScript对浮点值的处理,结果为 2.7755575615628914e-17
。
使用 Number.EPSILON
,我们可以检查 result
是否是如此之小,以至于像在最后一行中那样接近0。
Number.isInteger(num)
Number.isInteger
检查给定的 num
是否为整数。例如,我们可以按以下方式使用它:
Number.isInteger(2.05); // falseNumber.isInteger(2); // true
Number.isSafeInteger(number)
还有 isSafeInteger
方法来检查JavaScript整数是否在JavaScript可以接受的范围内。该范围由Number.MIN_SAFE_INTEGER
和 Number.MAX_SAFE_INTEGER
的值表示。
Number.MIN_SAFE_INTEGER
为-9007199254740991,Number.MAX_SAFE_INTEGER
为9007199254740991。
Number.isNaN(num)
Number.isNaN
检查 num
是否为NaN。与全局 isNaN()
函数不同,此方法不将其参数强制为数字。因此,对于非数字使用它是安全的。
例如,isNaN('abc')
返回 true
,而 Number.isNaN('abc')
返回 false
。因此,它实际上是在检查 num
是否真的是 NaN
,而不是将值强制为一个数字,并检查强制值是否是 NaN
。
Number.parseInt(num, radix)
Number.parseInt
与全局 parseInt
函数具有相同的作用。它使用要转换的数字字符串和基数(即数字将被转换为基数的基数)作为第二个参数。
例如,我们可以编写以下代码来做到这一点:
Number.parseInt('11', 8); // 9
上面的代码返回9,因为我们通过将8作为第二个参数传入来假设字符串是八进制数。
Number.parseInt
对八进制或二进制数字文字没有特殊支持。例如:
Number.parseInt('0o11', 8); // 0
但是,它确实支持将十六进制文字转换为数字。例如,Number.parseInt('0xF')
返回15。因此它知道我们传入的是十六进制数字。
新 Math 方法
Math
对象具有用于数字,三角和按位运算的新方法。
Math.sign(num)
sign方法返回数字的符号。如果我们有一个负数,则返回-1,如果数字为0,则返回0。否则,返回1。
例如,Math.sign(-2)
返回-1,Math.sign(0)
返回0,Math.sign(6)
返回1。
Math.trunc(num)
Math.trunc
删除数字的小数部分并返回它。
例如,Math.trunc(2.1)
返回2,Math.trunc(-2.1)
返回-2,Math.trunc(2.9)
返回2。
Math.log10(num)
log10
方法计算 num
的以10为底的对数。例如,Math.log10(1000)
是3。
Math.hypot(x, y)
hypot
计算三角形的下折线的长度,给定横边和竖边的长度分别为 x
和 y
。
例如,Math.hypot(4, 3)
是5。
新整数字面量
ES6增加了对二进制和八进制文字的支持。要写一个二进制数字,我们给数字加上 0b
前缀,然后写二进制数字。
例如,我们可以把二进制值3写成 0b11
。
八进制数字以 0o
为前缀。例如,0o11
是9。
toString
方法需要一个 radix
参数,它可以将一个数字转换为我们想要的基数并返回为字符串。
例如 (9).toString(8)
是11。
总结
ES6为 Number
和 Math
对象引入了许多属性和方法。此外,我们还有新型的数字面量。现在支持二进制和八进制数。
此外,Number
对象现在具有 parseInt
和 isInteger
方法。我们还可以使用 Number.EPLISON
属性检查某个值是否足够接近0,这是一个非常小的数字。
Number
还具有 isNaN
和 isSafeInteger
方法来检查 NaN
而不进行转换,还有 isSafeInteger
方法来检查整数是否在JavaScript可以接受的范围内。
Math
方法包括使用 sign
方法获取数字的符号,使用 trunc
截断数字以及使用 log10
获取以10为底的对数。
来源:https://levelup.gitconnected.com,作者:John Au-Yeung,翻译:公众号《前端全栈开发者》
以上是 你可能会错过的ES6数字和数学功能 的全部内容, 来源链接: utcz.com/a/24455.html