ES7 中的指数运算符详解

阅读时长 4 分钟读完

在 ES7 中,新增了指数运算符 **,它可以简便地实现对数字的指数运算。这篇文章将会介绍这个运算符的使用方法和其他注意点。

基础使用方法

指数运算符 ** 的基本语法如下:

其中 base 表示底数,exponent 表示指数。例如:

上面的代码中,2 ** 3 就等同于 2 * 2 * 2,所以 result 的值就是 8

指数运算符的优先级

指数运算符的优先级比其他数学运算符都要高。例如:

上面的代码中,result1 的值为 18,因为先计算了 3 ** 2,最后再乘以 2。而 result2 的值为 36,因为用小括号明确指定了两个数相乘应先于指数运算。

负数指数的情况

指数运算符也可以用于负数指数的情况。例如:

上面的代码中,2 ** -3 等价于 1 / (2 ** 3),所以 result 的值就是 0.125

大数的指数计算

在指数运算中,如果底数或指数过大,就有可能会出现 Infinity-Infinity 的问题。例如:

上面的代码中,10 ** 1000 的值就是 Infinity

为了避免这种情况,可以使用 ES7 中新增的 Math.pow() 方法来进行指数计算。例如:

上面的代码中,Math.pow(10, 1000) 的值是一个科学计数法表示的数字,它可以在 JavaScript 中正确地表示一个大数的指数计算结果。

与其他运算符的结合

指数运算符也可以和其他运算符一起使用,例如加、减、乘、除等运算符。例如:

上面的代码中,result1 的值为 11,因为先计算了 3 ** 2,再加上 2result2 的值为 25,因为用小括号明确指定了两个数相加应先于指数运算。result3 的值为 2.5,因为先计算了 2 ** 2,再用 10 除以结果。

总结

指数运算符 ** 的加入让 JavaScript 中的指数运算更加简便,并具有很好的优先级和与其他运算符的结合性。但是需要注意指数过大时的 Infinity 问题,可以使用 Math.pow() 方法来避免此类问题。

示例代码

-- -------------------- ---- -------
------------- -- --- -- -

------------- - - -- --- -- --
-------------- - -- -- --- -- --

------------- -- ---- -- -----

-------------- -- ------ -- --------
------------------------ ------- -- -------

------------- - - -- --- -- --
-------------- - -- -- --- -- --
-------------- - - -- --- -- ---

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6501a80d95b1f8cacdf52a07

纠错
反馈