我對運行以下函數的確切執行時間線有點困惑。我看到MDN引導驗證碼:瞭解遞歸函數在javascript中的工作方式
function foo (i) {
if (i<0) return;
console.log('begin' + i);
foo(i-1);
console.log('end' + i);
}
根據我的職能是如何工作的知識,這是我的想法,但我的知識是不夠的:
我覺得當函數foo(3)
被調用時,它將轉到該功能並檢查條件if i < 0
,然後它將運行下一個代碼console.log('begin:' + i)
。
之後,執行下一行代碼,由於JavaScript逐行執行,下一行代碼foo(i-1)
將被執行。
需要將當前值i
即3
減1,因此調用foo(2)
並繼續執行。
我的問題是:我的理解是否正確?。如果沒有,請解釋這段代碼正在做什麼,否則任何人都可以簡單解釋一下函數何時會停止被調用?
那麼,什麼*不*它做的,你是什麼困惑關於? – deceze
'FOO(3)' 開始3 開始2 開始1 開始0 結束0 結束1周 端2 端3 – BNilsou
從你的描述,你** **不明白這個遞歸函數是如何工作的! – Jamiec