这是我参与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+碎片化学习,每天都在向前走一步,这是所有文章的目录入口。