Помощь в понимании JS

167
16 ноября 2017, 05:53
function f(c) {
    c--;
    document.write("<p>" + c);
    if (c != 0) {
        f(c);
    }
    document.write("<p>" + c);
}
f(3);

Output: 2 1 0 0 1 2

Вопрос, почему функция не заканчивается после второго нуля ("0") а продолжает печатать 1 и 2 ?

Answer 1

Давайте заменим переменные их реальными значениями и посмотрим, что получится.

Итак, вызов f(3); разворачивается в такое

3--;
document.write("<p>" + 2);
if (2 != 0) {
  2--;
  document.write("<p>" + 1);
  if (1 != 0) {
    1--;
    document.write("<p>" + 0);
    if (0 != 0) {
    }
    document.write("<p>" + 0);
  }
  document.write("<p>" + 1);
}
document.write("<p>" + 2);
READ ALSO
Не работает кнопка jQ [требует правки]

Не работает кнопка jQ [требует правки]

Не работает кнопка для адаптивного меню(при клике на кнопку, должно выпадать меню

149
вернуть input значение disabled

вернуть input значение disabled

Всем приветЕсть чекбокс и инпут

190
inputStream to json

inputStream to json

в js скрипт приходит json в формате inputstream как мне его распарсить?

186
Подсказка при наборе текста в ReactJS

Подсказка при наборе текста в ReactJS

Пытаюсь сделать всплывающую подсказку для input, чтобы пользователь мог по первым введенным символам увидеть какие варианты доступныИспользуя...

203