-1

在 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 语句之后执行它。

4

4 回答 4

8

认为:

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

然后:

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

两者不等价;您永远不应该使用布尔运算符代替条件运算符。像其他回答者一样,我也认为条件运算符并不缺乏简单表达式的可读性。

于 2009-03-24T19:39:03.590 回答
5

三元运算符对我来说当然是可读的。甚至比第一个示例更重要,因为简洁,逻辑代码总是比执行相同操作的多行控制代码更容易理解。

于 2009-03-24T19:24:19.973 回答
3

我不同意只要正确使用第一个缺乏可读性,IOW a、b 和 c 本身就是简单的表达式。尽管在不应该的情况下,该运算符确实会被滥用。

类似地,第二个表达式,使用结果 foo 作为布尔值以外的任何东西都不好。使用布尔运算符返回非布尔值,因为它们的工作方式令人困惑。然而,作为一个布尔表达式,它是合理的。

于 2009-03-24T19:28:22.337 回答
1
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.

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

于 2009-03-24T19:21:25.753 回答