Невозможно вернуть значение в операторе if в JavaScript

1

Я застрял на этом пару часов. Я проверил рекурсивную функцию в JavaScript, возвращенную из оператора if, но заканчивается только конец выполнения функции и значение, которое я пытался вернуть, не было присвоено переменной. Это console.log как undefined.

Вот мой код, это просто, поскольку я изучаю рекурсивные функции:

    function foo(i) {
       // if i equals 5, return out of function
       if (i === 5) {
          console.log("We are now at 5");
          return "Done";
       } else {
          console.log(i);
          foo(++i);
     }
   }


let test = foo(0);
console.log(test);

Я просто не понимаю, почему он не возвращает "Готово" к переменной, но если я поставлю оператор return за пределами if/else, он вернется, как я предполагаю. Я пробовал другие обычные, простые, не рекурсивные функции, и они возвращаются в пределах блока if.

Теги:
function
recursion

1 ответ

4
Лучший ответ

Проблема заключается не в возврате "Готово", а в рекурсивном вызове. Вы просто вызываете его, а не возвращаете, поэтому возвращаемое значение из рекурсивного вызова не возвращается "вверх". Просто return его, и вам все будет в порядке:

function foo(i) {
   // if i equals 5, return out of function
   if (i === 5) {
      console.log("We are now at 5");
      return "Done";
   } else {
      console.log(i);
      return foo(++i); // Here!
   }
}
  • 1
    О хорошо Я неправильно понял первый раз. большое Вам спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню