1 回答

TA貢獻1820條經驗 獲得超2個贊
var i = 0;
function fn(){
i++;
if(i < 10){
//不管什么代碼,遞歸還是其他的,我不關心,它造個原子彈也行
fn()
//沒有返回值吧?所以返回undefined
}else{
//后面的遞歸你不去想,第一次的fn并不會進入這個分支
return i;
}
}
var result = fn();
console.log(result);
小兄弟你不要被遞歸繞暈了,你不要管什么遞歸,它就是一個函數,在第一個fn進入的i<10分支里,沒有返回值,那么這個函數就返回默認的undefined
我們這里減少一下遞歸層數,手把手的一層層展開
var i = 0;
function fn(){
i++; // 1
if(i < 2){
//fn()代碼直接寫進去
function() {
i++ // 2
if(i < 2) {
... //不會進入
}else {
return i // 貌似這里有返回值, 但是這里是這個函數的返回值,不是上面fn的返回值,而且你并沒有使用這個返回值
}
}()
}else{
return i;
}
}
添加回答
舉報