我想弄明白为什么这个递归函数总是说undefined。递归函数说undefined
function countDown(num) {
if (num === 0) {
return;
}
countDown(num - 1);
}
console.log(countDown(10));
我想弄明白为什么这个递归函数总是说undefined。递归函数说undefined
function countDown(num) {
if (num === 0) {
return;
}
countDown(num - 1);
}
console.log(countDown(10));
“裸” return
声明实际上是相同的
return undefined;
在其他情况下,你的函数没有return
可言,所以这也很喜欢
return undefined;
因此在任何情况下,您的函数都会返回undefined
。
它不返回一个值;因此它返回undefined
。
function foo() {
return;
}
console.log(foo());
function bar() {}
console.log(bar());
如果num
是0
然后你打一个return
语句后一无所获,所以该函数返回undefined
。
如果num
是任何其他值,那么根本不会按return
语句,所以该函数仍然返回undefined
。
在这个特殊的例子中,只有当你看到返回值时,你是num
是10
。这是“任何其他价值”。
它返回undefined
,因为你没有返回任何东西。为了能够看到结果,例如记录每个周期的num
值或在末尾返回stop
字符串。
function countDown(num) {
console.log(num);
if (num === 0) {
return 'stop';
}
return countDown(num - 1);
}
console.log(countDown(4));
你永远不'从功能return'任何*价值*。 –
你希望它返回什么?零? – Pointy