许多动作语句的通用 if 或三元运算符?
Common if or ternary operator for many actions statement?
我想过如何在单个三元语句中执行许多操作,但最终与普通 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");
}
使用简单否定和三元的一种简洁的写法是:
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");
注意这里如何使用三元来决定使用哪个字符串。
不过不要使用三元函数来产生副作用。这不是它们的目的,滥用它们永远不会帮助提高代码的可读性。如果你需要副作用(改变一些变量),只需使用普通的 if
...else
。它们更具可读性。
我想过如何在单个三元语句中执行许多操作,但最终与普通 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");
}
使用简单否定和三元的一种简洁的写法是:
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");
注意这里如何使用三元来决定使用哪个字符串。
不过不要使用三元函数来产生副作用。这不是它们的目的,滥用它们永远不会帮助提高代码的可读性。如果你需要副作用(改变一些变量),只需使用普通的 if
...else
。它们更具可读性。