我的 javascript 循环在它通过所有 if else 语句之前就中断了

My javascript loop breaks before it gets through all if else statements

我正在尝试编写一个 PIN 码猜谜游戏并写了一堆 if else 语句,但在我输入第一个 PIN 码(正确或错误)后它停止工作,谁能告诉我发生了什么事?

var ans = prompt("Do you want to play?");
if (ans == "y") {
 document.getElementById("ans").innerHTML = "You answered yes.";
 guessNum();
 if (gNum != pswd) {
  document.getElementById("hint").innerHTML = h1;
  guessNum();
  if (gNum != pswd) { 
   document.getElementById("hint").innerHTML = h2;
   guessNum();
   if (gNum != pswd) {
    document.getElementById("hint").innerHTML = h3;
    guessNum();
    if (gNum != pswd) {
     document.getElementById("hint").innerHTML = "You lost. :(";
    } else {
     document.getElementById("hint").innerHTML = "You guessed the pin!";}
   } else {
    document.getElementById("hint").innerHTML = "You guessed the pin!";}
  } else {
   document.getElementById("hint").innerHTML = "You guessed the pin!";}
 } else {
  document.getElementById("hint").innerHTML = "You guessed the pin!";}
} else {
 document.getElementById("ans").innerHTML = "You answered no.";}

这是 javascript 的其余部分,但我认为问题不在于此。

var nums = [0, 0, 0, 0];
for (var idx = 0; idx < nums.length; ++idx)
{
    nums[idx] = Math.floor((Math.random() * 9) + 1);
}
pswd = nums.join("")
document.getElementById("nums").innerHTML = pswd;

function guessNum() {
var gNum = prompt("What do you think the number is?")
}

if (nums[3] % 2 == 0) {
 var divis = "even";
} else {
 var divis = "odd";
}
var h1 = "The first number is " + nums[0]
var h2 = "The sum of the middle numbers are " + (nums[1] + nums[2])
var h3 = "The last number is " + divis

问题是您在 guessNum 函数中创建的变量 gNum 只存在于此。 Javascript 是函数范围的。

当您到达 if (gNum != pswd) {... gNum 根本不存在时。使 guessNum return 成为值,并在与 if.

相同的范围内创建实际的 gNum 变量
function guessNum() {
  return prompt("What do you think the number is?")
}

...
var gNum = guessNum();
if (gNum != pswd) {
...

我还建议您研究 while 循环,以避免这些嵌套的 ifs。继续努力! :)