嵌套三元运算符的可接受格式是什么?

时间:2016-02-21 20:14:13

标签: javascript formatting ternary-operator

假设我们有嵌套的三元语句:

return foo ? 1 : bar ? 2 : 3;

格式化此代码以确保其他人未来可读性的最佳方法是什么。

6 个答案:

答案 0 :(得分:3)

This post是我能找到的最受欢迎的观点。有建议

return foo ? 1 :
       bar ? 2 : 
             3 ;

答案 1 :(得分:1)

分开功能

function getValue(cond1, cond2) {
  if(cond1) return 'a';
  if(cond2) return 'b';
  return 'c';
}

function work() {
  const result = getValue(/* some params */);
}

答案 2 :(得分:0)

我不知道这是否被接受,但我一直这样使用它。

Ternary 为您提供了如此自然的测试结构,您只需使其多行并正确缩进即可使代码非常易读。我坚信三元的以下用法是嵌套条件的最佳表现。

return foo ? 1 
           : bar ? 2
                 : 3;

在更复杂的情况下,您可以让三元运算符和逗号运算符完美地协同工作。请记住,逗号分隔组中的最后一条指令会自动返回。对于三元来说超级方便。

return foo ? ( doSometingFoo()
             , variable++
             , collectResult()               // and return foo result
             )
           : bar ? ( doSomethingBar()
                   , variable--
                   , collectAnotherResult()  // and return bar result
                   )
                 : ( doSomethingReject()
                   , variable = 0
                   , rejectSomehow()         // and return error code
                   )

答案 3 :(得分:0)

我更喜欢这种三元运算符格式的可读性:

return foo
    ? bar
    : baz
      ? qux
      : qiz
        ? 1
        : 2;

答案 4 :(得分:-1)

return foo ? 1 : (bar ? 2 : 3) ;

答案 5 :(得分:-2)

为了便于阅读,请远离这些陈述,如果您想要更具可读性,只需扩展并使用正常的陈述,就会非常容易被误读。

只有嵌套的if语句列表没有错误。

if(foo){
   return 1
}else{
  if(bar){
      return 2;
  }else{
      return 3;
  }
}