Javascript链式不等式给出了奇怪的结果

Bry*_*ead 3 javascript

(0 <= 0 <= 0) === false
(-1 < 0 <= 0 <= 0) === true
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?Javascript实际上是否存在不等式链接,在某些情况下是错误的?

Bry*_*ead 6

输入问题然后被答案打动了.Javascript没有不等式链接.相反,0 <= 0 <= 0变为true <= 0,被评估为1 <= 0.的确,0 < 0 <= 0评估为true.


Den*_*ret 6

没有运算符链接,但优先级。这里所有的操作符都有相同的优先级,所以操作是从左到右进行的。

当您的比较涉及布尔值时,MDN 解释了比较的工作原理

如果操作数之一是布尔值,则布尔操作数在为真时转换为 1,如果为假则转换为 +0。

这意味着第一个操作根据优先级分解为

((0 <= 0) <= 0)
Run Code Online (Sandbox Code Playgroud)

这是

true <= false
Run Code Online (Sandbox Code Playgroud)

这是

false
Run Code Online (Sandbox Code Playgroud)

第二个是

(true <= 0) <= 0
Run Code Online (Sandbox Code Playgroud)

这是

false <= 0 
Run Code Online (Sandbox Code Playgroud)

这是true.