在浏览器控制台中执行它会显示 SyntaxError: Unexpected token **
。
在节点中尝试:
> -1**2
...
...
...
...^C
我认为这是一个算术表达式,其中 **
是幂运算符。其他运营商不存在此类问题。
奇怪的是,在第二行输入*/
会触发执行:
> -1**2
... */
-1**2
^^
SyntaxError: Unexpected token **
这里发生了什么?
最佳答案
Executing it in the browser console says SyntaxError: Unexpected token **.
因为那是 spec .以这种方式设计以避免混淆它是一的否定的平方(即 (-1) ** 2
),还是一的平方的否定(即 -(1 ** 2)
)。此设计是 extensive discussion 的结果运算符优先级,并检查其他语言如何处理它,最后决定通过将其作为语法错误来避免意外行为。
关于javascript - 为什么 -1**2 是 JavaScript 中的语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43556752/