【问题标题】:Simply if else condition in JavaScript/es6JavaScript/es6 中的 if else 条件
【发布时间】:2022-01-07 16:03:43
【问题描述】:

如果更简单的话,我该怎么做。

if (!request) {
  return 'no request';
} else {
  if (loading === '404') {
    return 'rejected';
  }
  if (loading === '200' && !array1.length) {
    return 'fulfilled';
  }
}

如果有三元运算符,那我该怎么做

【问题讨论】:

  • 当前代码有什么问题?很明显,您不需要缩小开发代码。
  • 我认为没有比这更简单的了。每个条件都不一样,每个return语句也不一样
  • 并非所有路径都会导致返回值,因此不确定三元组如何工作。
  • 无法让它更简单,但您错过了else condition 中的返回。如果所有条件都没有满足怎么办?我认为如果没有完成,你应该返回一些东西。
  • 我猜代码可以正常工作,所以更好的寻求帮助的网站是codereview.stackexchange.com。除此之外,如果您在if 中有return,则不需要else,此约定会使您的代码变平。

标签: javascript if-statement ecmascript-6 conditional-statements


【解决方案1】:

你可以省略 else 部分,因为你返回 if true。

if (!request) return 'no request';
if (loading === '404') return 'rejected';
if (loading === '200' && !array1.length) return 'fulfilled';

【讨论】:

    【解决方案2】:

    你可以使用if-elseif-else声明

    if(!request) return 'no request'
    else if(loading === '404') return 'rejected'
    else if(loading === '200' && !array.length) return 'fulfilled'
    

    【讨论】:

    • 如果您有return,则无需使用else if。如果您删除冗余代码,答案将与第一个相同。
    【解决方案3】:

    可能会考虑...

    {
      // ...
      return ((!request && 'no request')
        || (loading === '404' && 'rejected')
        || (loading === '200' && !array1.length && 'fulfilled')
        || undefined // or 'failure' // or 'not fulfilled'
      );
    }
    

    ...或...

    {
      // ...
      let returnValue = (!request && 'no request')
        || (loading === '404' && 'rejected')
        || (loading === '200' && !array1.length && 'fulfilled')
        || undefined; // or 'failure'; // or 'not fulfilled';
      
      // do more stuff ...
      // ...
      // ... maybe even change `returnValue` again.
      
      return returnValue;      
    }
    

    【讨论】:

    • 我认为这种风格在更标准的代码库中非常有用:如果你有 5 次以上的加载,并且它们都返回一个字符串,那么这个代码是完美的。但是,如果这三个 if 语句都存在,那么这段代码很难挖掘。只是一个意见。
    • 顺便说一句,不需要用括号包裹逻辑与表达式。这个问题的主要区别在于地点。 if 语句可以在任何地方,但return 语句无条件地结束函数。
    【解决方案4】:

    您也可以使用三元运算符简单地执行此操作。希望下面的代码对你有用。

    !request ? 'no request' : loading === '404' ? 'rejected' : 'fullfilled'
    

    【讨论】:

    • 嵌套三元组几乎总是不好的做法。
    【解决方案5】:
    if (request) {
      switch (loading) {
        case "404":
          return "rejected";
        case "200":
          if (!array1.length) return "filfilled";
          break;
      }
    } else {
      return "no request";
    }
    

    考虑到您可能会遇到更多案例,我认为此处使用 switch 语句会更好。

    【讨论】:

    • 请不要,为了圈复杂性:)
    猜你喜欢
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多