三元运算符和A,B,否则C.是否存在重要差异?

Ann*_*nan -1 javascript logic conditional boolean

在javascript中有几种方法可以做到这一点.

最重要,最具可读性和灵活性的可能是:

if (a){
    //b
}
else {
    //c
}
Run Code Online (Sandbox Code Playgroud)

其他只能用于分配且不太可读的东西是:

var foo = 'c';
if (a){
    foo = 'b';
}
Run Code Online (Sandbox Code Playgroud)

不过,我的主要问题是关于我能想到的最后两种方法:

var foo = a ? b : c;

var foo = a && b || c;
Run Code Online (Sandbox Code Playgroud)

这两个表达式之间有什么区别吗?除了缺乏可读性之外.

*尽管您可以将foo指定为函数,然后在if语句之后执行它.

Mil*_*les 8

假设:

var a = false, b = '', c = 'bar';
Run Code Online (Sandbox Code Playgroud)

然后:

var foo = a ? b : c; // foo == ''
var foo = a && b || c; // foo == 'bar'
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*eau 5

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