1 回答

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