【问题标题】:What is the difference between using `return` outside and inside of conditions?在条件外部和内部使用“return”有什么区别?
【发布时间】:2018-07-17 15:40:00
【问题描述】:

在 else 条件外和 else 条件内使用 return 有什么区别?

我知道最好的代码是不使用 else 并且我知道两者都做同样的事情。有区别或优势吗?

       
         function f1() {
            if (1 == 1) {
                return true;
            } else {
                return false;
            }
        }

function f2() {
            if (1 !== 1) {
                return true;
            } else {
                return false;
            }
            return false
        }
        
        console.log(f1());
        console.log(f2());

【问题讨论】:

  • JavaScript 本质上是异步的,所以在返回响应时必须小心
  • SaveVersionMainScreen() { return !this.commonValidation(true); }
  • 这是什么? @RameshRajendran 为什么要完全更改代码?为什么不使用更新的代码扩展问题?
  • 仍然无法重现您的问题。 if/else 外面的 return false 是多余的,因为它永远不会被执行。除了 !==== 之外,这两个例子都是等价的。
  • @RameshRajendran 你不应该完全删除。你应该加强。根据您的旧问题,在这篇文章中,三个答案和许多 cmets。新的搜索者会感到困惑。谁稍后会来这里寻求帮助。

标签: javascript angular typescript


【解决方案1】:

完全改变你的问题的方法。暂时留下我的答案。 您的版本 2 是不好的做法,代码无法使用像 Java 这样的严格语言,因为您有一个无法访问的 return 语句。至于你的测试,从你的函数中删除 else 应该会为你解决它,但问题似乎出在测试而不是你的代码上。

SaveVersionMainScreen() {
    let element = this.commonValidation(true);
    if (element) {            
        return false;
    }
  return true;
 }

【讨论】:

    【解决方案2】:

    与您之前的问题无关,仅此:

    在方法:2 中,最后一个return 语句(即return true;)实际上是无用的。因为SaveVersionMainScreen() 中的最后一行不会被执行,因为ifelse 这两个条件都存在。这应该考虑所有情况。

    【讨论】:

      【解决方案3】:

      如果您在块代码中有if 语句,并且在ifelse 块中都包含return。它的意思是if块将执行并且return来自方法或else块将执行并且return。该块下面的其他语句将不会执行,编译器可能会给您类似

      的错误

      无法到达声明

      例如:

      SaveVersionMainScreen() {
              let element = this.commonValidation(true);
              if (element) {            
                  return false;
              }
              else{
                return true;
              }
      
      // Below  statements will never run
      
                var a=2;
                var b=3;
                var c=4;
                return true;
               }
      

      【讨论】:

      • 我不明白你。
      • 两种方法都一样。我用sn-p检查过。
      猜你喜欢
      • 2020-06-17
      • 2022-08-12
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 2014-05-24
      • 2011-08-26
      相关资源
      最近更新 更多