通过直觉,我知道以下语法是错误的,或者至少没有按预期工作(尝试过),但也没有抛出错误:
var x = 2;
if (1 < x < 3) ...
我猜虚拟机首先计算表达式的一部分,然后将其与其余部分进行比较,但是有人真的知道(最好有文档链接)这里到底发生了什么吗?
编辑:我找到了 similar question其中有如何编写此内容的解决方案,但我实际上对这里幕后发生的事情感兴趣。
最佳答案
使用这个:
if (1 < x && x < 3)
你正在做的是
if (
(1 < x) // boolean, cast to 0 or 1
< 3
)
This page from the MDN on operator precedence解释说 <
从左到右解释。
关于Javascript 多重比较表达式语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24672239/