If-else语句的短路

时间:2012-05-31 02:27:18

标签: javascript

所以我知道

variable && runTrue();

真的意味着

if(variable){
    runTrue();
}

那么是否有更简化的写作方式

if(variable){
    runTrue();
}else{
    runFalse();
}

而不是if-else

2 个答案:

答案 0 :(得分:6)

使用conditional operator ? :的三元表达式是为这种简单的二元选择而发明的:

function a() {alert('odd')}
function b() {alert('even')}
var foo = new Date() % 2;

foo? a() : b(); // odd or even, more or less randomly

相当于:

if (foo % 2) {
  a(); // foo is odd
} else {
  b(); // foo is even
}

答案 1 :(得分:2)

是的,我发现这与普通的if-else

做同样的事情
(variable) && (runTrue(),1) || runFalse();

2 字符更短(仍然比没有好)并在jsPerf中进行测试,通常Short-circut evaluation - false大部分时间都比正常的做法。

(variable) &&           //If variable is true, then execute runTrue and return 1
(runTrue(),1) ||        // (so that it wouldn't execute runFalse)
runFalse();             //If variable is false, then runFalse will be executed.

但当然,您可以随时使用variable?runTrue():runFalse();