我仍然对javascript中的求幂运算符的计数操作感到困惑

我仍然对javascript中的求幂运算符的计数操作感到困惑,javascript,Javascript,一个运算符优先权的工作流程是如何实现的,即求幂我仍然对这些工作如何解释它的工作方式感到困惑。2**3的结果是8,因为 2 * 2 * 2 === 8 i、 e.2自身乘以三等于8 同样地,2**8为256,因为 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 === 256 不过,该运算符有些“奇怪”,因为它是右关联的,而所有其他数学运算都是左关联的: x / y / z === (x / y) / z x - y - z === (x - y) - z // but

一个运算符优先权的工作流程是如何实现的,即求幂我仍然对这些工作如何解释它的工作方式感到困惑。

2**3的结果是8,因为

2 * 2 * 2  === 8
i、 e.2自身乘以三等于8

同样地,
2**8
为256,因为

2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 === 256
不过,该运算符有些“奇怪”,因为它是右关联的,而所有其他数学运算都是左关联的:

x / y / z  ===  (x / y) / z
x - y - z  ===  (x - y) - z

// but

x ** y ** z  ===  x ** (y ** z)
而且,
**
运算符对一元运算符的使用也很奇怪

-2**8       // syntax error
(-2)**8     // ok, value is 256
-(2 ** 8)   // ok, value is -256

还要注意的是,虽然将
x**y
解释为“x乘以自身y倍”对于
y
的非负整数值是有意义的,但求幂运算符更为一般,例如
x**0.5
Math.sqrt(x)相同

你能给我们一个你感到困惑的例子吗?你在问什么?我对2**3的运算感到困惑,为什么它的8个结果?你是在问数学运算本身还是运算符的优先级?2**3是2乘以3的幂,或2*2*2,或8。“2**3为什么它的结果是8”,因为2*2*2=8。