Я знаю, что есть похожие вопросы об этом, но это действительно простая версия. Я не понимаю, почему я не могу вернуть переменную здесь, хотя я вижу значение в предупреждении. Это работает:Почему я могу предупредить, но не вернуться?
function theTest(x){
var myNum = x + 1
if(myNum == 5){
alert(myNum);
}
else{
theTest(myNum);
}
}
theTest(0);
Но это возвращает неопределенное значение:
function theTest(x){
var myNum = x + 1
if(myNum == 5){
return myNum;
}
else{
theTest(myNum);
}
}
alert(theTest(0));
Почему Почему Почему?
вам нужно 'вернуть theTest (тупит);' – Doorknob
Эта проблема на самом деле очень интересно. Причина, по которой первая функция будет отображать предупреждение, состоит в том, что вы вызываете предупреждение, пока вы все еще находитесь в области переменной myNum. Вторая функция будет выполнять одинаковое количество итераций, но так как рекурсивные функции возвращаются undefined, никакое значение не может быть передано обратно. У Arvind есть решение, которое будет работать правильно. – cgatian
cgatian, вы бы поставили в качестве ответа, чтобы я мог дать вам кредит, пожалуйста. Вопрос не в том, КАК, я понял, как это сделать. Я не мог понять, почему, хотя я знал, что проблема в этом вопросе. Я хотел бы поблагодарить вас за объяснение. –