let m = 1;
let nn = 1;
function fn(n){
nn = nn * m;
if(m == n){
console.log(nn); //120
return nn;
}
m++;
fn(n);
}
console.log(fn(5)); //undefined
问题描述:
如图 明明设置了return,console.log也能输出 但是最后调用fn(5)最后输出undefined
原因:
在递归函数内部调用fn时没有return,也就没有值返回给最外层的函数
解决方案:
在递归函数内部调用fn前加上return
let m = 1;
let nn = 1;
function fn(n){
nn = nn * m;
if(m == n){
console.log(nn); //120
return nn;
}
m++;
return fn(n);
}
console.log(fn(5)); //120