Подпись функции guess
говорит о том, что она принимает параметр x
, но вы не передаете никакое значение функции при ее вызове, поэтому она присваивает undefined
x
при запуске guess
, который никогда не будет равен 3
. Вы можете принять 2 подхода, чтобы исправить это. Во-первых, вы можете сделать x
глобальную переменную , избавившись от let
, где вы определяете x
в функции random
и удалив x
из сигнатуры функции guess
вот так:
var x;
function random() {
x = Math.floor((Math.random() * 10) + 1);
guess();
}
function guess() {
if (x === 3) {
alert(x + '- you are correct!');
}
else {
alert(x + '- try again');
random();
}
}
random();
Или вы можете использовать x в качестве параметра для функции предположения, удалив глобальное объявление var x;
и передав x
в guess
когда вы вызываете его в функции random
, вот так:
function random() {
let x = Math.floor((Math.random() * 10) + 1);
guess(x);
}
function guess(x) {
if (x === 3) {
alert(x + '- you are correct!');
}
else {
alert(x + '- try again');
random();
}
}
random();
Лично у меня даже не было бы функции random
. Я бы просто определил x
в guess
и позвонил бы guess
из себя. И я бы использовал rando js .com , чтобы сделать случайность более читабельной. Вот как я это сделаю:
function guess() {
let x = rando(1, 10);
if (x === 3) return alert(x + '- you are correct!');
alert(x + '- try again');
guess();
}
guess();
<script src="https://randojs.com/1.0.0.js"></script>
Обратите внимание, что оператор return
немедленно и тут же остановит выполнение функции, поэтому он не перейдет к предупреждению «повторить попытку» если номер был угадан правильно.