递归函数说未定义

时间:2017-04-04 15:33:14

标签: javascript recursion

我试图弄清楚为什么这个递归函数一直说未定义。

function countDown(num) {
    if (num === 0) {
        return;
    }
    countDown(num - 1);
}

console.log(countDown(10));

4 个答案:

答案 0 :(得分:1)

“裸”return语句实际上与

相同
return undefined;

在另一种情况下,你的功能完全没有return,所以这也像

return undefined;

因此,在所有情况下,您的函数都会返回undefined

答案 1 :(得分:1)

它不返回值;因此它返回undefined

function foo() {
  return;
}

console.log(foo());

function bar() {}

console.log(bar());

答案 2 :(得分:1)

如果num0,那么您点击return语句后面没有任何内容,因此该函数返回undefined

如果num是任何其他值,那么您根本不会点击return语句,因此该函数仍会返回undefined

在此特定示例中,您查看返回值的唯一时间是num10。那个"任何其他价值"。

答案 3 :(得分:1)

它会返回undefined,因为您没有返回任何内容。为了能够看到结果,例如记录每个周期的num值或在结尾返回stop字符串。



function countDown(num) {
  console.log(num);
  if (num === 0) {
    return 'stop';
  }
  return countDown(num - 1);
}

console.log(countDown(4));