我试图弄清楚为什么这个递归函数一直说未定义。
function countDown(num) {
if (num === 0) {
return;
}
countDown(num - 1);
}
console.log(countDown(10));
答案 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)
如果num
为0
,那么您点击return
语句后面没有任何内容,因此该函数返回undefined
。
如果num
是任何其他值,那么您根本不会点击return
语句,因此该函数仍会返回undefined
。
在此特定示例中,您查看返回值的唯一时间是num
为10
。那个"任何其他价值"。
答案 3 :(得分:1)
它会返回undefined
,因为您没有返回任何内容。为了能够看到结果,例如记录每个周期的num
值或在结尾返回stop
字符串。
function countDown(num) {
console.log(num);
if (num === 0) {
return 'stop';
}
return countDown(num - 1);
}
console.log(countDown(4));