【问题标题】:Can't return a value within if statement in JavaScript无法在 JavaScript 中的 if 语句中返回值
【发布时间】:2017-12-01 22:15:54
【问题描述】:

我已经坚持了几个小时。我在 JavaScript 中测试了一个递归函数,从 if 语句返回,但只有函数执行上下文结束并且我试图返回的值没有分配给变量。 console.log 是未定义的。

这是我的代码,很简单,因为我正在学习递归函数:

    function foo(i) {
       // if i equals 5, return out of function
       if (i === 5) {
          console.log("We are now at 5");
          return "Done";
       } else {
          console.log(i);
          foo(++i);
     }
   }


let test = foo(0);
console.log(test);

我只是不明白为什么它不向变量返回“完成”,但是如果我将 return 语句放在 if/else 之外,它会返回我想要的方式。我尝试了其他常规、简单、非递归函数,它们在 if 块中返回正常。

【问题讨论】:

    标签: javascript function recursion


    【解决方案1】:

    问题不在于返回“完成”,而在于递归调用。您只需调用它而不是返回它,因此递归调用的返回值不会“向上”返回。只需return 就可以了,你应该没问题:

    function foo(i) {
       // if i equals 5, return out of function
       if (i === 5) {
          console.log("We are now at 5");
          return "Done";
       } else {
          console.log(i);
          return foo(++i); // Here!
       }
    }
    

    【讨论】:

    • 哦,好的。我第一次理解错了。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-04-12
    • 2013-12-12
    • 2021-03-04
    • 2010-11-17
    • 1970-01-01
    • 2020-12-15
    • 2018-04-18
    相关资源
    最近更新 更多