我写了以下代码,认为它无法工作,因为它会像这样:“如果它没有运行并且ID与此匹配,请执行代码”,而忽略中断大小的上限:
if(!isRunning && id==="break-increment" && breakvar<=59){
this.setState((state) => ({
break: this.state.break +1}))}
令我惊讶的是,它奏效了。但是我真的不明白为什么。它不会失败,因为永远不会评估封顶尺寸吗?
答案 0 :(得分:1)
我认为您不能在没有短路的情况下满足三个条件(例如,如果isRunning为false,那么它只会计算id)
否。
如果!isRunning
为假,则第一个&&
短路并被评估为LHS(假),而不评估RHS。
如果!isRunning
为真,则第一个&&
不会短路,并被评估为其RHS(id==="break-increment" && breakvar<=59
)