javascript - 为什么 -1**2 是 JavaScript 中的语法错误?

标签 javascript exponentiation ecmascript-2016

在浏览器控制台中执行它会显示 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/

相关文章:

javascript - TensorFlow.JS 整数乘法结果小数

algorithm - 使用费马定理的矩阵求幂

c - 模幂运算

c++ - 通过平方进行模幂运算的溢出可能性

javascript - 静态方法在 ES6 类中未定义,在 reactjs 中带有装饰器

javascript - Node.js 强制从另一台服务器下载

javascript - 使用日期选择器将日期值分配给输入字段

javascript - 与 ES7 : Uncaught TypeError: Cannot read property 'state' of undefined react

javascript - 带有 promise/async-await 的回调上下文

javascript - 比较起始日期小于截止日期