Замыкание из рекурсивной функции
Есть рекурсивная функция-игра "угадай число". Нужно разделить её на два файла-в одном из них будет основной код игры, а в другом-функция, которая её запускает, соответственно, нужно сделать с использованием функции замыкания. Как исправить мой вариант, чтобы функция работала корректно?
// Рекурсивная функция-игра "Угадай число"
let randomNum = parseInt(Math.random() * 100);
console.log(randomNum);
function guessNumber(userNum) {
userNum = prompt('Введите число');
if (isNaN(userNum)) {
alert('Можно вводить только числа');
guessNumber(userNum);
}
if (userNum === null) {
return;
}
if (userNum == randomNum) {
alert('Верно, Вы угадали загаданное число!');
return;
} else if (userNum < randomNum) {
alert('Ваше число меньше');
guessNumber(userNum);
} else if (userNum > randomNum) {
alert('Ваше число больше');
guessNumber(userNum);
}
}
guessNumber();
мой вариант замыкания, основной код игры:
let guessNumber = (function () {
let randomNum = parseInt(Math.random() * 1000);
let attempts = 10;
let userNum = prompt('Введите число. У Вас 10 попыток');
if (isNaN(userNum)) {
alert('Можно вводить только числа');
}
if (attempts === 0) {
alert('Попытки закончились');
}
if (userNum === null) {
}
attempts--;
if (userNum == randomNum) {
alert('Верно, Вы угадали загаданное число!');
} else if (userNum < randomNum) {
alert('Ваше число меньше! Осталось попыток: ' + attempts);
userNum = +prompt('Введите число');
} else if (userNum > randomNum) {
alert('Ваше число больше! Осталось попыток: ' + attempts);
userNum = +prompt('Введите число');
}
})();
Второй файл, с функцией, которая будет запускать игру:
guessNumber();
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Твой вариант это не функция а вызов. Если хочешь замыкание то это делается немного по другому.
let guessfunc = () => { function Res () {
let randomNum = parseInt(Math.random() * 1000);
let attempts = 10;
let userNum = prompt('Введите число. У Вас 10 попыток');
if (isNaN(userNum)) {
alert('Можно вводить только числа');
}
if (attempts === 0) {
alert('Попытки закончились');
}
if (userNum === null) {
}
attempts--;
if (userNum == randomNum) {
alert('Верно, Вы угадали загаданное число!');
} else if (userNum < randomNum) {
alert('Ваше число меньше! Осталось попыток: ' + attempts);
userNum = +prompt('Введите число');
} else if (userNum > randomNum) {
alert('Ваше число больше! Осталось попыток: ' + attempts);
userNum = +prompt('Введите число');
}
}
return Res;
}
let guessNumber = guessfunc();
guessNumber();