代码之家  ›  专栏  ›  技术社区  ›  DIES

多动作语句的公共if或三元运算符?

  •  0
  • DIES  · 技术社区  · 7 年前

    我在考虑如何在一个三元语句中执行许多操作,但最后使用的几乎与常见的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 回复  |  直到 7 年前
        1
  •  2
  •   Carcigenicate    7 年前

    一种使用简单的否定和三元结构的简洁写法是:

    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 . 它们更具可读性。