ES2015之Math

210 阅读2分钟

这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

Math

ES2015的标准增加了:Math的一些拓展,这篇文章我们就来了解一下什么是Math的一些拓展。

Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法,Math 不是一个函数对象。

如何使用

Math 用于 Number 类型,它不支持 BigInt

Math.acosh()

因为 acosh() 是 Math 的静态方法,所以我们可以直接调用 Math.acosh() ,Math.acosh() 函数返回一个数的反双曲余弦值,使用如下:

console.log(Math.acosh(0)); // NaN
console.log(Math.acosh(0.5)); // NaN
console.log(Math.acosh(1)); // 0
console.log(Math.acosh(2)); // 1.3169578969248166

从代码中可以看出,如果返回给定数的反双曲余弦值小于 1 则返回 NaN

Math.hypot()

计算直角三角形的斜边,或复数的幅值时可以使用函数 Math.sqrt(v1*v1 + v2*v2) ,其中 v1 和 v2 是三角形的两个直角边或复数的实部和虚部。如果想计算更多维度,那么只需要在后面添加更多的数的平方就可以了,比如 Math.sqrt(v1*v1 + v2*v2 + v3*v3 + v4*v4)

Math.hypot()  函数比 Math.sqrt() 更简单也更快,返回所有参数的平方和的平方根,所以上述的行为可以这样来改写:

Math.hypot(v1, v2)

Math.hypot(v1, v2, v3, v4, ...)

我们再以勾三、股四、弦五为例:

console.log(Math.hypot(3, 4)); // 5

3的平方加4的平方为25,再开根号则为5。

Math.pow()

Math.pow()  函数返回基数(base)的指数(exponent)次幂,使用如下:

console.log(Math.pow(2, 10)); // 1024

Math.imul()

该函数将两个参数分别转换为 32 位整数,相乘后返回 32 位结果,类似 C 语言的 32 位整数相乘,使用如下:

Math.imul(-2, -2) // 4
Math.imul(0xffffffff, 5) //-5

注意事项

我们需要注意的是:Math.imul()方法的参数计算的时候会先转化为32位的整数。

总结

如果你想了解ES的其他特性,请移步到 ES2015+碎片化学习,每天都在向前走一步,这是所有文章的目录入口。