执行返回true/false的3个函数,如果返回true则执行某些操作,否则不会发生短路

the*_*ick 1 javascript if-statement logical-operators

我有3个JS函数a()b()c()

我想执行所有3并检查是否所有3都返回true然后我想调用函数yeah()或者调用函数boo()

我可以使用&&但它会短路,如果第一个或第二个返回false,则可能无法执行所有3个函数

所以

      if(a() && b() && c()) { yeah(); } else { boo(); }
Run Code Online (Sandbox Code Playgroud)

不行!

你能建议一个更好的单行代码吗?

mel*_*okb 5

如果你想要一个单行,你也可以使用&而不是&&:

if(a() & b() & c()) { yeah(); } else { boo(); }
Run Code Online (Sandbox Code Playgroud)

或者,如果您想确切知道返回的函数数量是多少,则可以执行此操作:

if(a() + b() + c() == 3) { yeah(); } else { boo(); }
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/DQkpM/1/