Показать параметр функции - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь отобразить свое имя с помощью параметра функции, однако я получаю ошибку Максимальный размер стека вызовов превысил при запуске моего кода.Я должен иметь возможность изменить отображаемое имя с помощью параметра.

var naam;
function groet(naam){

var naam = groet();
console.log("Hey " + naam);
return naam;
}

groet("Rick");

Любая помощь?Ура!

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Ваша функция рекурсивная (она сама себя вызывает).Вам не хватает ключевого требования для рекурсии на работу, базового варианта.Базовые случаи - это условия, при которых вы больше не вызываете саму функцию.

0 голосов
/ 17 мая 2018

Поскольку ОП не отвечает на вопросы, довольно сложно определить, в чем заключается их путаница. Я предполагаю, что они не понимают рекурсию (функция, которая вызывает себя):

function groet(naam){
  var naam = groet();//Call to self
  console.log("Hey " + naam);
  return naam;
}

В этой реализации отсутствует рекурсивное завершение . Рекурсивные алгоритмы должны иметь условие, которое в конечном итоге остановит метод от вызова самого себя.

В этом алгоритме отсутствует такое условие, поэтому мы получаем исключение, которое в основном говорит нам, что мы называем нашу функцию бесконечное число раз.

ОП дал нам это условие:

Я должен иметь возможность изменять отображаемое имя с помощью параметра.

Для этого все, что нам нужно, это что-то вроде Бена Уэста:

function groet(naam){
    console.log("Hey " + naam);
    return naam;
}

groet("Rick");

Потому что переменная по своей природе ... переменная. Рекурсия не обязательна для решения проблемы с именем переменной. Таким образом, рекурсия может быть удалена. ОП может потребоваться return naam. Если, например, naam является надуманным примером и в действительности они изменяют значение naam в реализации. По умолчанию JavaScript вернет здесь неопределенное значение.

0 голосов
/ 17 мая 2018

Когда вы звоните groet("Rick"), он вызывает groet(), который вызывает groet(), который вызывает groet(), который вызывает groet() ...

Используйте параметр, подобный этому.

function groet(naam){
    console.log("Hey " + naam);
}

groet("Rick");
...