首页 > 解决方案 > 带有 and 的内联代码不起作用,但使用常规 if 有效

问题描述

我有以下代码,它给了我编译错误:

for(var i in test){
     (this.watcherFailureCount> 10) && break
}

但是,以下工作:

if(this.watcherFailureCount> 10)
{ 
  break 
}

我在这里错过了什么吗?为什么第一个不适合我?

标签: javascript

解决方案


&& 尝试评估您的表达式并将其返回值转换为布尔值。您使用的 break 是控制循环的关键字,不应在表达式中使用。

有些语言允许这样做,但似乎 js 不允许。公平地说,不这样做是可以的,因为它具有误导性。想象一下这样的条件:a && b && break && c && d = a。

第一个选项没有真正的好处,除非您使用 codegolf 或其他东西,并且如果您使用 codegolf 您选择了错误的语言:)。


推荐阅读