Javascript 三变量短路评估

Javascript 三变量短路评估,javascript,Javascript,我编写了下面的代码,认为它将无法工作,因为它将是这样的:“如果它没有运行,并且ID与此代码匹配,则执行代码”,忽略中断大小的上限: if(!isRunning && id==="break-increment" && breakvar<=59){ this.setState((state) => ({ break: this.state.break +1}))} if(!isRunning&&id==“中断增量”&&breakvar({ brea

我编写了下面的代码,认为它将无法工作,因为它将是这样的:“如果它没有运行,并且ID与此代码匹配,则执行代码”,忽略中断大小的上限:

if(!isRunning && id==="break-increment" && breakvar<=59){
this.setState((state) => ({
  break: this.state.break +1}))}
if(!isRunning&&id==“中断增量”&&breakvar({
break:this.state.break+1}
令我大吃一惊的是,它成功了。但我真的不明白为什么。它会失败吗?因为永远不会评估瓶盖大小

我认为如果没有短路,你不可能有三个条件(例如,如果isRunning为false,那么它只计算id)

没有

如果
!isRunning
为false,第一个
&
短路并被评估为其LHS(false),而不评估RHS


如果
!isRunning
为真,第一个
&
不会短路,并作为其RHS(
id==“断开增量”)进行评估&&breakvar
breakvar
的值是多少?…必须有一些默认值,如
0
null
不清楚您在问什么。
breakvar
不会被忽略。如果它>59,测试将为false。breakvar有一个默认值,是的(它是5)。我的问题是:Javascript如何计算语句的第二部分?我认为短路意味着它将只计算isRunning和id。只有当
!isRunning
为false时,它才会短路,因为它不需要测试语句的其余部分。好的。因此,第二部分将作为一部分进行计算,因为括号是right?谢谢。但是如果我在RHS中再添加一个条件(例如,id==“break increment”&&breakvar=2),那会短路,对吗?@HernanAriel-只有当
&
的LHS故障时