为什么"break;"不允许我像它应该的那样退出我的循环?



我正在尝试学习javascript,并正在创建一个基本的刽子手游戏。但是,在尝试脱离循环时,我不断收到错误。我一辈子都想不通。

提前感谢您的帮助。

var words = [
  "javascript",
  "monkey",
  "amazing",
  "pancake"
];
var word = words[Math.floor(Math.random() * words.length)];
var answerArray = [];
for (var i = 0; i < word.length; i++) {
  answerArray[i] = "_";
}
var remainingLetters = word.length;
while (remainingLetters > 0) {
  alert(answerArray.join(" "));
}
var guess = prompt("Guess a letter, or click Cancel to stop playing.");
if (guess === null) {
  break;
} else if (guess.length !== 1) {
  alert("Please enter a single letter.");
} else {
  for (var j = 0; j < word.length; j++) {
    if (word[j] === guess) {
      answerArray[j] = guess;
      remainingLetters--;
    }
  }
}
alert(answerArray.join(" "));
alert("Good job! The answer was " + word);

将中断放在循环内

var words = [
            "javascript",
            "monkey",
            "amazing",
            "pancake"
        ];
var word = words[Math.floor(Math.random() * words.length)];
var answerArray = [];
for (var i = 0; i < word.length; i++) {
            answerArray[i] = "_";
        }
var remainingLetters = word.length;
while (remainingLetters > 0) {
            alert(answerArray.join(" "));
            var guess = prompt("Guess a letter, or click Cancel to stop playing.");
if (guess === null) {
    break;
} else if (guess.length !== 1) {
    alert("Please enter a single letter.");
} else {
    for (var j = 0; j < word.length; j++) {
        if (word[j] === guess) {
            answerArray[j] = guess;
            remainingLetters--;
        }
    }
}
        }
alert(answerArray.join(" "));
alert("Good job! The answer was " + word);

如果没有看到其余代码来理解范围,我会假设您错误地使用了 break。相反,您应该使用返回。

中断在循环内使用(用于、同时、用于输入、开关等)。其中 as return 用于从函数返回,如果块和可以返回值或不返回值。

if (guess === null) {
    return;

javascript 中的中断仅适用于循环,而不是 if 语句,因此在运行代码时会收到该错误消息。其次,while 循环变成了无限循环,因为您无法停止警报以在提示中输入任何内容我会这样重写它:

var words = [
        "javascript",
        "monkey",
        "amazing",
        "pancake"
    ];
var word = words[Math.floor(Math.random() * words.length)];
var answerArray = [];
for (var i = 0; i < word.length; i++) {
        answerArray[i] = "_";
    }
var remainingLetters = word.length;
while (remainingLetters > 0) {
        alert(answerArray.join(" "));
        var guess = prompt("Guess a letter, or click Cancel to stop playing.");
        if(!guess){
          alert('Please enter a letter!')
        }
        else if(guess.length != 1) {
          alert('Please enter a single letter!')
        }
        else {
            for (var j = 0; j < word.length; j++) {
            if (word[j] === guess) {
               answerArray[j] = guess;
                remainingLetters--;
              } 
            }
        }
    }
alert(answerArray.join(" "));
alert("Good job! The answer was " + word);

最新更新