【问题标题】:Using multiple conditions in ? : statements in javascript在 ? 中使用多个条件: javascript中的语句
【发布时间】:2017-03-31 13:10:52
【问题描述】:

需要检查三个条件并根据条件为变量赋值。

if(a =="z1"){
   b = "one";
} else if(a =="z2"){
   b = "two";
} else if(a =="z3"){
   b = "three";
}

是否可以在 JavaScript 中使用 ? : 声明使其成为单行代码

【问题讨论】:

  • Java !== JavaScript
  • b=['one','two','three'][a[1]-1]

标签: javascript conditional ternary-operator


【解决方案1】:
var b = a == "z1" ? "one" : ( a == "z2" ? "two" : ( a == "z3" ? "three" : undefined ) ) ;

a = "z1"

alert(a == "z1" ? "one" : ( a == "z2" ? "two" : ( a == "z3" ? "three" : undefined ) ) );

a = "z2"

alert(a == "z1" ? "one" : ( a == "z2" ? "two" : ( a == "z3" ? "three" : undefined ) ) );

a = "z3"

alert(a == "z1" ? "one" : ( a == "z2" ? "two" : ( a == "z3" ? "three" : undefined ) ) );

a = "z4"

alert(a == "z1" ? "one" : ( a == "z2" ? "two" : ( a == "z3" ? "three" : undefined ) ) );

【讨论】:

    【解决方案2】:

    是的,您可以使用将其转换为Conditional(ternary) operator

    var a = "z3";
    var b = a == "z1" ? "one" : a == "z2" ? "two" : a == "z3" ? "three" : "" ;
    
    console.log(b);


    仅供参考:为了更好的可读性,我建议使用 if...else 语句或使用 switch 语句。尽管您需要为嵌套的三元运算符使用括号,以避免在复杂操作中出现问题。

    【讨论】:

    • 但你不应该!
    • @Rayon:为什么不呢?
    • 1) 不必要 2) 不可读 3) 与传统的 if-else 条件相比没有优势...
    • @Rayon : 减少 char 的数量很有帮助
    • 离缩小又近了一步。 :P
    【解决方案3】:

    你可以这样做:

    b=(a=="z1"?"one":(a =="z2"?"two":(a =="z3"?"three":undefined)))

    【讨论】:

      【解决方案4】:
      var b = (a =="z1") ? "one" : ((a =="z2") ?"two":(a =="z3")?"three":null);
      

      不要忘记快速阅读这篇文章很难阅读。 使用 if else 阻塞是完全可以的。

      【讨论】:

        猜你喜欢
        • 2018-09-24
        • 1970-01-01
        • 2018-04-12
        • 1970-01-01
        • 2020-11-06
        • 2015-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多