我正在尝试学习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);