有几种方法在JavaScript来做到这一点。

为本与最可读的和灵活的大概是:

if (a){
    //b
}
else {
    //c
}

别的东西,只有*起到与分配和较少可读是:

var foo = 'c';
if (a){
    foo = 'b';
}

我的主要问题,虽然是对最后两个方法我能想到的:

var foo = a ? b : c;

var foo = a && b || c;

是否有这两个表达式之间的任何差异?除了可读性其中两个缺乏。

*虽然您的可能的分配FOO是一个函数,那么if语句后执行它。

有帮助吗?

解决方案

假设:

var a = false, b = '', c = 'bar';

然后:

var foo = a ? b : c; // foo == ''
var foo = a && b || c; // foo == 'bar'

在两者不相等的;你永远不应该在的地方条件运算符的使用布尔运算符。像其他应答者,我也是的,将条件操作并不缺乏可读性简单表达式的意见。

其他提示

三元运算符是肯定可读我。甚至moreso比第一例中,由于简洁,逻辑代码总是比的控制多行代码的是做同样的事情更容易理解。

我不同意,只要它被正确地使用的第一缺乏可读性,IOW a,b和c是简单表达式本身。该操作者获得的情况下,虽然滥用它不应该。

类似地,第二表达,使用该结果作为富比一个布尔以外的任何其他不会好。使用布尔运算符,因为那是他们工作的方式返回非布尔值仅仅是混乱。然而作为一个布尔表达式其合理的。

var foo = a ? b : c;    // foo is b when a is true else c.
var foo = a && b || c;  // foo is true if a and b are true or c is true.

他们不计算相同的结果,因为后者是一个布尔表达式,不使用三元运算符。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top