2017-04-04 77 views
-1

我想弄明白为什么这个递归函数总是说undefined。递归函数说undefined

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

console.log(countDown(10)); 
+0

你永远不'从功能return'任何*价值*。 –

+1

你希望它返回什么?零? – Pointy

回答

1

“裸” return声明实际上是相同的

return undefined; 

在其他情况下,你的函数没有return可言,所以这也很喜欢

return undefined; 

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

1

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

function foo() { 
 
    return; 
 
} 
 

 
console.log(foo()); 
 

 
function bar() {} 
 

 
console.log(bar());

1

如果num0然后你打一个return语句后一无所获,所以该函数返回undefined

如果num是任何其他值,那么根本不会按return语句,所以该函数仍然返回undefined

在这个特殊的例子中,只有当你看到返回值时,你是num10。这是“任何其他价值”。

1

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

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

 
console.log(countDown(4));