Выполните 3 функции, которые возвращают истину / ложь, и если все возвращают истину, делайте то или иное, короткое замыкание не происходит - PullRequest
1 голос
/ 28 сентября 2011

У меня есть 3 функции JS a () b () c ()

Я хочу выполнить все 3, а также проверить, все ли 3 возвращают true, тогда я хочу вызвать функцию yeah () или вызвать функциюboo ()

Я могу использовать &&, но это будет короткое замыкание и может не выполнить все 3 функции, если первая или вторая вернет false

Итак

      if(a() && b() && c()) { yeah(); } else { boo(); }

не сработает!

Можете ли вы предложить лучший однострочный код?

Ответы [ 2 ]

5 голосов
/ 28 сентября 2011

Если вы хотите однострочник, вы также можете использовать & вместо &&:

if(a() & b() & c()) { yeah(); } else { boo(); }

Или вы можете сделать это, если хотите точно знать, сколько функций вернуло true:

if(a() + b() + c() == 3) { yeah(); } else { boo(); }

Образец: http://jsfiddle.net/DQkpM/1/

1 голос
/ 28 сентября 2011

A & B & C сделает свое дело. Он выполнит все три функции.

...