Допоможіть розібратися як працює код JavaScript

Доброго дня. Допоможіть будь ласка розібратись, як працює цей код. Якщо запустити його, то в консолі висвітлює 1 2 3 4 5, не можу зрозуміти, як тут працює console.log.

P.S. console.log був над рекурсією, просто вирішив подивитись, що буде якщо поставити після.

function numb(num){
    if (num === 1){
        return console.log(num);
    }
    else{
        numb(num-1);
        console.log(num);
    }
}
numb(5)

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Коментар порушує правила спільноти і видалений модераторами.

Происходит тут два момента: создается функция numb, вызывается функция numb с аргументом 5.
Работает так: при вызове функции идет проверка, чему равен аргумент, если он равен 1, то в консоль выводится его значение и идет возврат из функции (ее завершение), если не равен единице, то идет рекурсивный вызов функции со значением аргумента уменьшенным на 1, после выхода из которого выводится в консоль значение аргумента.
Таким образом,
при вызове numb(5)
-выполнение сразу идет в else,
-вызывается numb(4)
—else
—numb(3)
---else
---numb(2)
----else
----numb(1)
-----if
-----console.log(1)
-----return
----console.log(2)
----return
---console.log(3)
---return
—console.log(4)
—return
-console.log(5)
-return
Вот и все. Есть, конечно, у этой функции проблема — если вызвать ее с аргументом, который не положительное целое число, то все поломается.

И потом еще кто-то говорит что DOU это программерский форум :D

Адміністрація DOU вам потрібний технічний модератор, якому будуть відправлятись такі теми на перевірку, щоб уникнути тем з такою маячнею

либо создать отдельный раздел для подобного... а то альтернатива идти на ру стековерфлов.

а то альтернатива идти на ру стековерфлов

Думаєш, там таке не заSTFWвеблять? )

Так там пол ресурса такого- одни влепят минусов, а другие все ровно ответят или направят куда надо. Сколько раз на дню там вопросы типа «Functions returns [object Promise] instead of value» и всякий треш.
Но основной поинт в том, что укр. версии стека нет.

Functions returns [object Promise] instead of value

Вґалосіну! ))
Це шо, Кумари вивчили вяліків та маґучій, чи звідки стільки трешу?

Functions returns [object Promise] instead of value

не, это с++ программисты учат жабаскрипт )

Це стьоб такий? )

numb(num-1);

А шо не так? Це ж не асінхронщина, а цілком собі синхронний виклик ф-ії із складанням всього ланюжку в call stack. Тобто, грубо кажучи, поки воно не «забуриться» на 5 рівнів в глибину, оцьому шматку в елс-блоці:
console.log(num);
жодного виконання не світить.

просто вирішив подивитись, що буде якщо поставити після.

youtu.be/ud0k5orY5EQ?t=42

Підписатись на коментарі