在 ES7 中,新添加了一个指数操作符 **
,可以用来求一个数的幂次方。这篇文章将详细讲解指数操作符的用法,以及和传统的幂运算符 Math.pow()
的比较。
操作符介绍
指数操作符 **
可以简单地理解为“乘方”。它的用法如下:
base ** exponent
其中 base
表示底数,exponent
表示指数。例如:
2 ** 3 // 8
表示 2 的 3 次方等于 8。
需要注意的是,指数必须是数字类型,而底数可以是任意类型。如果底数不是数字类型,会先转换为数字类型再进行运算。例如:
'2' ** 3 // 8
实际上等价于:
Number('2') ** 3 // 8
和 Math.pow() 的比较
在 ES7 之前,我们通过 Math.pow()
方法来进行幂运算。例如:
Math.pow(2, 3) // 8
指数操作符 **
和 Math.pow()
的相同点是,它们都可以进行幂计算。但也存在一些不同点:
Math.pow()
方法接收两个参数,而指数操作符**
直接使用两个操作数进行幂运算。这样写更加简洁。**
的优先级高于乘法、除法、取模等运算符,如同加、减、乘、除等运算符的优先级一样。
2 ** 2 * 2 // 8 2 ** (2 * 2) // 16
而 Math.pow()
则需要使用括号来明确优先级。
- 在幂次方大于 2 时,
**
性能更优。
-- -------------------- ---- ------- --- ----- - ----------- --- ---- - - -- - - --------- ---- - ----------- ---- - ---------------------- - ------- -- -- --- ------ - ----------- --- ---- - - -- - - --------- ---- - - -- --- - ---------------------- - -------- -- --
可以看出,在幂次方大于 2 时,**
的速度比 Math.pow()
快不少。
使用场景
指数操作符 **
在实际开发中并不是很常用,但也存在一些使用场景。
计算面积和体积
例如,在计算一个立方体的体积时,可以使用指数操作符 **
。
-- -------------------- ---- ------- --- ------ - --- ----- - -- ------ - -- --- ------ - ------ - ----- - ------- -------------------- -- --- --- ------- - ------ -- - - ------- --------------------- -- ---
这里使用了指数操作符 **
来计算底面积,而不必使用 Math.pow()
来计算。
常用数学运算
指数操作符 **
还可以用在其他常用的数学运算中,例如计算平方根和立方根:
var squared = 4 ** (1 / 2); console.log(squared); // 2 var cubed = 27 ** (1 / 3); console.log(cubed); // 3
总结
本文介绍了 ES7 中新增的指数操作符 **
,并和传统的幂运算符 Math.pow()
进行了比较。指数操作符的优势在于简洁、优先级高、性能好,可以在计算面积和体积、以及其他数学运算中使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649a968d48841e98947810b5