繁体   English   中英

无法在JavaScript中的if语句内返回值

[英]Can't return a value within if statement in JavaScript

我已经坚持了几个小时。 我在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);

我只是不明白为什么它不向变量返回“ Done”,但是如果我将return语句放在if / else之外,它将返回我的意图。 我尝试了其他常规,简单,非递归的函数,它们在if块内返回良好。

问题不在于返回“ Done”,而是在于递归调用。 您只是调用它而不是返回它,所以递归调用返回的值不会“向上”返回。 只需returnreturn ,就可以了:

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!
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM