Javascript 简明教程
JavaScript - Exponentiation Operator
Exponentiation Operator
JavaScript 中的 exponentiation 运算符表示为 **。指数运算符采用两个运算数,并返回提升到第二个运算数的第一个运算数的幂。
The exponentiation operator in JavaScript is represented as **. The exponentiation operator takes two operands and returns the power of the first operand raised to the second.
指数运算符还可以接受 BigInt 数据类型的变量作为运算数。此外,它遵循结合律,这意味着 a*b*c 和 a*(b*c) 表达式给出相同的结果。
The exponentiation operator can also accept the variables of the BigInt data type as operands. Also, it follows the property of associativity, which means a*b*c and a*(b*c) expressions give the same result.
Syntax
我们应该遵循以下语法来使用指数运算符。
We should follow the syntax below to use the exponentiation operator.
let pow = x ** y;
Examples
让我们通过一些示例详细了解指数运算符。
Let’s understand the exponentiation operator in details with the help of some examples.
Example
以下示例定义了包含 2 和 3 值的 p 和 q 变量。那之后,我们使用指数运算符来获取 PQ。在输出中,您可以观察 'pow' 变量的值,为 23,等于 8。
The example below defines the p and q variables containing the 2 and 3 values. After that, we used the exponentiation operator to get the PQ. In the output, you can observe the value of the 'pow' variable, which is 23, equal to 8.
<html>
<body>
<div id = "output"></div>
<script>
let p = 2;
let q = 3;
let pow = p ** q;
document.getElementById("output").innerHTML =
"The value of p ** q: " + pow;
</script>
</body>
</html>
它将产生以下结果 −
It will produce the following result −
The value of p ** q: 8
Example: Associativity of Exponentiation Operator
此示例演示了指数运算符遵循结合律,并从右向左计算表达式。
This example demonstrates that the exponentiation operator follows the associativity property and evaluates the expression from right to left.
两个表达式在输出中都打印 6561,等于 38,其中 8 等于 23。
Both expressions print the 6561 in the output, equal to the 38, where 8 equals the 23.
<html>
<body>
<div id="output"></div>
<script>
let p = 3;
let q = 2;
let r = 3;
let pow1 = p ** q ** r;
let pow2 = p ** (q ** r);
document.getElementById("output").innerHTML =
"pow1 = " + pow1 + "<br>" +
"pow2 = " + pow2;
</script>
</body>
</html>
它将产生以下结果 −
It will produce the following result −
pow1 = 6561
pow2 = 6561
Example: Exponentiation operator with BigInt variables
以下示例演示了指数运算符还可以与 bigint 数字一起使用。它在输出中返回 bigint 值。
The below example demonstrates that the exponentiation operator can also be used with the bigint numbers. It returns the bigint value in the output.
<html>
<body>
<div id = "output"></div>
<script>
let p = 10000000000000000000000000000n;
let q = 2n;
let pow = p ** q;
document.getElementById("output").innerHTML = "pow = " + pow;
</script>
</body>
</html>
它将产生以下结果 −
It will produce the following result −
pow = 100000000000000000000000000000000000000000000000000000000
Example: Exponentiation operator with non-numeric values
当您使用非数字值作为指数运算符的运算数时,它会将该值转换为数字并返回结果。如果运算数无法转换为数字值,它在输出中返回 NaN。
When you use the non-numeric value as an operand of the exponentiation operator, it converts the value to numeric and returns the result. If the operand can’t be converted to the numeric value, it returns NaN in the output.
在此处,它将“[]”转换为 0 并给出正确的结果。字符串“2a”的数字值为 NaN,因此它在输出中打印 NaN。如果数组包含单个数字元素,则它将解析该元素。否则,如果数组包含多个元素,则它将评估 NaN。
Here, it converts the '[]' to 0 and gives the correct result. The numeric value for the string '2a' is NaN, so it prints the NaN in the output. If the array contains a single numeric element, it parses the element. Otherwise, it evaluates NaN if the array contains multiple elements.
<html>
<body>
<div id = "output"></div>
<script>
const output = document.getElementById("output");
let pow = 2 ** []; // Number([]) = 0
output .innerHTML = "10 ** [] = " + pow + "<br>";
pow = [] ** 2; // Number([]) = 0
output.innerHTML += "[] ** 2 = " + pow + "<br>";
pow = 2 ** [2]; // Number([2]) = 2
output.innerHTML += "10 ** [2] = " + pow + "<br>";
pow = "2" ** 2; // Number("2") = 2
output.innerHTML += "2 ** 2 = " + pow + "<br>";
pow = "2a" ** 2; // Number("2a") = NaN
output.innerHTML += "2a ** 2 = " + pow + "<br>";
pow = [2, 3] ** 2; // Number([2, 3]) = NaN
output.innerHTML += "[2, 3] ** 2 = " + pow + "<br>";
</script>
</body>
</html>
它将产生以下结果 −
It will produce the following result −
10 ** [] = 1
[] ** 2 = 0
10 ** [2] = 4
2 ** 2 = 4
2a ** 2 = NaN
[2, 3] ** 2 = NaN