ECMAScript 2018(ES9)中的 “Exponentiation operator” 升级了 JavaScript 数字

近几年来,JavaScript 在不断发展和改进,ECMAScript 2018(ES9)的发布引起了很多关注。其中一个很值得一提的新特性是“Exponentiation operator”,也称为指数运算符。本文将详细介绍该特性,并探讨它的深度、学习以及指导意义。

什么是“Exponentiation operator”?

“Exponentiation operator” 是 ECMAScript 2018(ES9)中加入的一个新运算符。它的符号是两个连续的星号(**),用于计算一个数的幂。例如:

console.log(2 ** 3); // 8

这个例子中,2 是底数,3 是指数,** 是指数运算符。指数运算符计算结果是 8

与此同时,JavaScript 中原来的 Math.pow() 函数也可以进行相同的运算,例如:

console.log(Math.pow(2, 3)); // 8

但使用指数运算符更简洁明了,更加符合现代 JavaScript 的开发规范。

深度和学习

指数运算符虽然看似简单,但在深入学习时,还存在许多需要注意的点。

首先,指数运算符是右结合的。这意味着在 2 ** 3 ** 2 这样的表达式中,先计算 3 ** 2 的结果,再计算 2 ** 9 的结果。因此,结果为 512 ,而不是 64。

其次,在指数运算符的优先级中,它排在乘法、除法、取模这一类算术运算符的前面,但是排在一元运算符 -+和后置递增和递减运算符的后面。因此,例如 a ** -1 这样的表达式中,** 运算符的优先级低于 - 运算符的优先级,需要使用括号明确优先级。

最后,指数运算符也可以与 = 运算符结合使用,例如 x **= y 相当于 x = x ** y

指导意义

指数运算符的引入,使得 JavaScript 数字的计算变得更加方便。它提高了开发效率,节省了开发者大量的代码。相信越来越多的开发者将使用指数运算符代替 Math.pow() 函数。

同时,深入学习指数运算符也能够帮助开发者更深入的了解 JavaScript 运算符的优先级与结合性规则,更加熟练地运用 JavaScript 运算符。

下面是一些关于指数运算符的示例代码:

// 底数和指数都为变量
let base = 2;
let exponent = 3;
console.log(base ** exponent); // 8

// 底数和指数可以是表达式
console.log(5 ** 2 - 1); // 24

// 指数可以为小数,底数可以为负数
console.log((-2) ** 0.5); // NaN

// 指数可以是 Infinity ,底数可以是负数
console.log((-2) ** Infinity); // NaN

// 指数可以是负数,底数可以是小数
console.log(2.5 ** -2); // 0.16

// 指数可以是负数,运算结果为小数
let num1 = 3;
let num2 = -2;
console.log(num1 ** num2); // 0.1111111111111111

总结

在 ECMAScript 2018(ES9)中加入的指数运算符,非常实用,可以显著提高 JavaScript 数字的计算效率。但是,开发者也需要注意其运算符的优先级和结合性规则。

了解指数运算符的技巧和规则,会让开发者在工作中更加得心应手,提高工作效率。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a0f9f9add4f0e0ff924807


纠错反馈