Javascript 为什么求幂运算符的左操作数为负时会出现语法错误?
当我在JavaScript中使用指数运算符(Javascript 为什么求幂运算符的左操作数为负时会出现语法错误?,javascript,operator-precedence,exponent,ecmascript-2016,Javascript,Operator Precedence,Exponent,Ecmascript 2016,当我在JavaScript中使用指数运算符(**)时,它通常按预期工作: 2 ** 2 // 4 2 ** -2 // 0.25 但当左操作数为负时 -2 ** 2 我得到一个语法错误: 未捕获的语法错误:意外标记** 我可以通过在-2 (-2) ** 2 // 4 但我很好奇是什么导致了这个错误。其他运算符(+-*/%等)没有此问题。为什么**操作符会发生这种情况?很有趣。我确实找到了一些关于Mozilla的文档,详细说明了为什么这是不可能的 2**-3是可能的。这种行为是故意的
**
)时,它通常按预期工作:
2 ** 2 // 4
2 ** -2 // 0.25
但当左操作数为负时
-2 ** 2
我得到一个语法错误:
未捕获的语法错误:意外标记**
我可以通过在-2
(-2) ** 2 // 4
但我很好奇是什么导致了这个错误。其他运算符(
+-*/%
等)没有此问题。为什么**
操作符会发生这种情况?很有趣。我确实找到了一些关于Mozilla的文档,详细说明了为什么这是不可能的
2**-3是可能的。这种行为是故意的,是为了防止你写模棱两可的表达: 在大多数语言中,如PHP和Python以及其他具有 求幂运算符(**),定义了求幂运算符 比一元运算符(如一元+和)具有更高的优先级 一元-但也有一些例外。例如,在Bash中** 运算符的优先级定义为低于一元运算符。 在JavaScript中,不可能编写不明确的求幂运算 表达式,即不能放置一元运算符 (+/-/~/!/delete/void/typeof)紧跟在基数之前
-2 ** 2;
// 4 in Bash, -4 in other languages.
// This is invalid in JavaScript, as the operation is ambiguous.
-(2 ** 2);
// -4 in JavaScript and the author's intention is unambiguous.