Javascript 三变量短路评估
我编写了下面的代码,认为它将无法工作,因为它将是这样的:“如果它没有运行,并且ID与此代码匹配,则执行代码”,忽略中断大小的上限:Javascript 三变量短路评估,javascript,Javascript,我编写了下面的代码,认为它将无法工作,因为它将是这样的:“如果它没有运行,并且ID与此代码匹配,则执行代码”,忽略中断大小的上限: if(!isRunning && id==="break-increment" && breakvar<=59){ this.setState((state) => ({ break: this.state.break +1}))} if(!isRunning&&id==“中断增量”&&breakvar({ brea
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==“断开增量”)进行评估&&breakvarbreakvar
的值是多少?…必须有一些默认值,如0
或null
不清楚您在问什么。breakvar
不会被忽略。如果它>59,测试将为false。breakvar有一个默认值,是的(它是5)。我的问题是:Javascript如何计算语句的第二部分?我认为短路意味着它将只计算isRunning和id。只有当!isRunning
为false时,它才会短路,因为它不需要测试语句的其余部分。好的。因此,第二部分将作为一部分进行计算,因为括号是right?谢谢。但是如果我在RHS中再添加一个条件(例如,id==“break increment”&&breakvar=2),那会短路,对吗?@HernanAriel-只有当&
的LHS故障时