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...