为什么 JavaScript 会返回那个?

Vya*_*lav 3 javascript

所以,我的问题是为什么:

1.7976931348623157E+308 > 10^16返回17谷歌浏览器,
(1.7976931348623157E+308) > (10^16)回报true

因为看起来这些操作都是一样的。

Sco*_*ter 9

第一个表达式等价于

(1.7976931348623157E+308 > 10) ^ 16
Run Code Online (Sandbox Code Playgroud)

或者

true ^ 16
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪,直到你意识到

true == 1
Run Code Online (Sandbox Code Playgroud)

是真的。

  • 除此之外,第一个表达式之所以被这样解析是由于[运算符优先级](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) -按位异或“^”的优先级低于比较运算符“>”,因此在比较之后执行异或。 (2认同)