许多行动声明的常见if或三元运算符?

时间:2018-03-08 13:38:40

标签: if-statement ternary-operator

我在考虑如何在单个三元语句中执行许多操作,但完成时与普通IF完全相同。那么哪个更好,或者没有差异?

video[0].muted ? (
    video[0].muted = false,
    vb.attr("data-value", "loud")
) : (
    video[0].muted = true,
    vb.attr("data-value", "off")
);
//
if(video[0].muted) {
    video[0].muted = false;
    vb.attr("data-value", "loud");
} else {
    video[0].muted = true;
    vb.attr("data-value", "off");
}

1 个答案:

答案 0 :(得分:2)

使用简单否定和三元的一种很好的写作方式是:

var v = video[0];

// Negate the muted attribute
v.muted = !v.muted;

// And use a ternary to decide the value of this one
vb.attr("data-value", v.muted ? "off" : "loud");

注意这里是如何使用三元组来决定使用哪个String。

但是,不要使用ternarys来实现副作用。这不是他们的目的,滥用它们从来不会有助于代码的可读性。如果您需要副作用(改变某些变量),只需使用普通if ... else。它们更具可读性。