mindyourlifeguide
@mindyourlifeguide

Будет ли переполнение стэка и как это проверить?

function readNumber() {
	let answer = prompt('Введите число?', 0);
	if (isFinite(answer) == true && answer != '') {
		alert('Это число: ' + answer);
	} else {
		readNumber();
	}
}
readNumber();
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
RAX7
@RAX7
В setTimeout заверни тогда переполнения стека не будет
function readNumber() {
  let answer = prompt('Введите число?', 0);
  if (isFinite(answer) == true && answer != '') {
    alert('Это число: ' + answer);
  } else {
    setTimeout(readNumber, 0);
  }
}

либо перепиши без рекурсии
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
hzzzzl
@hzzzzl
ну если юзер очень несообразительный

function readNumber(n) {
  console.log(n)

  if(n > 10000) {
    return 'DONE!'
  } else {
    return readNumber(n + 1)
  }
}

readNumber(0)


на 10000 раз проверить так

UPD:

ооо, у меня на дряхлом рабочем компе в браузере случается переполнение между 25000 и 26000 вызовами :D

5d555a6b0bc92704144614.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы