具有三个变量的短路评估

时间:2018-11-18 17:25:15

标签: javascript

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

if(!isRunning && id==="break-increment" && breakvar<=59){
this.setState((state) => ({
  break: this.state.break +1}))}

令我惊讶的是,它奏效了。但是我真的不明白为什么。它不会失败,因为永远不会评估封顶尺寸吗?

1 个答案:

答案 0 :(得分:1)

  

我认为您不能在没有短路的情况下满足三个条件(例如,如果isRunning为false,那么它只会计算id)

否。

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

如果!isRunning为真,则第一个&&不会短路,并被评估为其RHS(id==="break-increment" && breakvar<=59