Я немного смущен на точной временной шкале выполнения, в которой выполняется следующая функция. Я видел этот код на направляющем 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