所以我知道
variable && runTrue();
真的意味着
if(variable){
runTrue();
}
那么是否有更简化的写作方式
if(variable){
runTrue();
}else{
runFalse();
}
而不是if-else
?
答案 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();
。