Проблема с рекурсией, зациклился Alert
console.log проверил все участки кода, все работает - строка приводится к числу в realNum, операторы сравнения работают. Косяк какой то в alert, не могу понять почему при нажатии на ок не срабатывает заново вызов функции game()?
'use strict';
//Функции
//Проверка, что введённые данные являются числом
const isNumber = function (n) {
return !isNaN(parseFloat(n)) && isFinite(n);
};
//Игра
const start = function () {
let gameNum = Math.floor(Math.random() * 100) + 1;
console.log('Загаданное число: ' + gameNum);
let gameNumUser = prompt('Угадай число от 1 до 100');
const game = function () {
if (gameNumUser === null) {
alert('Игра окончена');
return;
}
if (isNumber(gameNumUser)) {
const realNum = +gameNumUser;
if (realNum > gameNum) {
alert('Загаданное число меньше');
game();
} else if (realNum < gameNum) {
alert('Загаданное число больше');
game();
} else {
if (confirm('Угадали! Сыграем ещё?')) {
start();
} else {
alert('Как хотите, до свидания!');
return;
}
}
} else {
alert('Введите число');
game();
}
};
game();
};
start();
Ответы (1 шт):
Автор решения: Stepan Chuev
→ Ссылка
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
</head>
<body>
<script>
function randomNumber(){
let number = Math.floor(Math.random()*100);
let result = prompt(`Введите число`)
if(result==number){
return alert(`Вы угадали число`)
}else if(result < number){
alert(`Ваше число меньше загаданного!`)
}else if(result > number){
alert(`число больше загаданного!`)
}
return alert(`вы не угадали число`)
}
randomNumber()
</script>
</body>
</html>