【发布时间】:2014-01-05 02:28:59
【问题描述】:
我在 if 块中有两个语句,它们都链接到将返回布尔值的函数。两个语句都必须为真,代码才能运行,但我希望它们都被检查,即使第一个是假的。相关代码:
if (myFunc(one) && myFunc(two)) {
//execute
}
myFunc 会在返回 false 之前执行一些代码,但是如果一个返回 false,此代码不会在两个上执行。
我得到了这个工作,但感觉就像一个黑客:
if ((myFunc(one) && myFunc(two)) || (myFunc(two) && myFunc(one))) {
//execute
}
有人有更好的解决方案吗?谢谢!
【问题讨论】:
-
IMO 如果条件有副作用,那就不好了。逻辑运算符的短路行为通常并不重要,因为条件不应该有副作用,因此它们是否被执行应该是无关紧要的。如果您想产生副作用,请在
if之外显式执行函数,而不是通过短路运算符链接。