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); // false
Number.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为底的对数。
如果对你有所启发和帮助,可以点个关注、收藏、转发,也可以留言讨论,这是对作者的最大鼓励。