JSFiddle - React, Tailwind, and code Playground
by kontrach
JavaScript
var list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: null
}
}
}
};
function printReverseList(list) {
if (list.next) {
//здесь мы вызываем функцию
printReverseList(list.next);
//выполнения кода не перейдет до сюда до тех пор, пока не выполниться вызванная функция.
}
alert('Сработал алерт функции номер ' + list.value);
}
printReverseList(list);
//если записать рекурсию в строчный код, то получится следующее.
//первый вызов. передаем объект.
№1 printReverseList(list.next);
//заходим в функцию
if (list.next.next) {
//так как свойство next не равно фолс, вызываем функцию и передаем ей объект list.next.next
№2 printReverseList(list.next.next);
if (list.next.next.next) {
//так как свойство next не равно фолс, вызываем функцию и передаем ей объект list.next.next.next
№3 printReverseList(list.next.next.next);
if (list.next.next.next) {
//так как свойство next не равно фолс, вызываем функцию и передаем ей объект list.next.next.next.next
№4 printReverseList(list.next.next.next.next);
if (list.next.next.next) {
//так как свойство next равно фолс ничего не делаем и продолжаем выполнять код функции №4
}
alert(list.next.next.next.value);
//закончили выполнение функции №4 и продолжаем выполнение функции №3
}
alert(list.next.next.value);
//закончили выполнение функции №3 и продолжаем выполнение функции №2
}
alert(list.next.value);
//закончили выполнение функции №2 и продолжаем выполнение функции №1
}
alert(list.value);
//а теперь без комментов
if (list.next) {
if (list.next.next) {
if (list.next.next.next) {
if (list.next.next.next) {
if...