【发布时间】:2014-08-13 19:55:41
【问题描述】:
我有几个独立的函数,它们根据其他条件返回真或假。当它们都返回 true 时,我希望发生一个动作,但是我希望所有函数都运行,而不管有多少返回 false。如果我只是想检查所有函数是否返回 true,我会使用:
if (func1() && func2() && func3() ){
//Some code
}
这样做的问题是,如果其中一个函数返回 false,则右侧的所有函数都不会执行。我以前没有尝试过的一种方法是在 if 表达式中使用按位与运算符 (&),如下所示:
if (func1() & func2() & func3() ){
//Some code
}
我已经简单地测试了这个方法,它似乎产生了预期的结果,但是我在其他地方找不到这种方法,我想知道是否有任何原因会产生意想不到的结果?
还有一个很好的理由不比较使用这种方法的函数的结果吗?
【问题讨论】:
-
我最好的猜测是“必须”评估函数才能进行按位比较,否则在发现错误时停止更有效。只要您的返回类型得到检查,我真的看不出有什么问题。
-
我个人认为依赖这样的副作用是一个有问题的设计决定。它使代码变得脆弱。
标签: javascript if-statement bitwise-operators