javascript中的无限循环警报框
我的问题是,为什么我的“你明白了!”警报一直在无限地持续?我知道我可以让它在那里打破,但我想知道它为什么一直这样做。它应该有一个秘密的_number==答案,并打破while循环,所以很明显它没有这样做,我不明白为什么。谢谢:)javascript中的无限循环警报框,javascript,loops,alert,infinite,Javascript,Loops,Alert,Infinite,我的问题是,为什么我的“你明白了!”警报一直在无限地持续?我知道我可以让它在那里打破,但我想知道它为什么一直这样做。它应该有一个秘密的_number==答案,并打破while循环,所以很明显它没有这样做,我不明白为什么。谢谢:) var secret\u number=Math.floor((Math.random()*10)+1); var answer=parseInt(提示(“输入您想要尝试的数字”); while(秘密号码!==答案) { 如果(答案==null | |答案==“”| |
var secret\u number=Math.floor((Math.random()*10)+1);
var answer=parseInt(提示(“输入您想要尝试的数字”);
while(秘密号码!==答案)
{
如果(答案==null | |答案==“”| | isNaN(答案))
打破
如果(回答>密码)
回答=提示(“这个数字太高了!”);
else if(answer当您在while循环中再次设置“answer”时,您没有执行parseInt
,因此该值现在是一个字符串,不等同于机密
和问题在于,您没有一条规则来结束while循环并显示警报
要结束while循环,您的密码和答案必须相同(==),但要显示警报,您的答案不得大于或小于密码
若要修复,请解析提示,我将使用相同的规则显示警报并完成程序。甚至将警报置于while循环之外。将while(secret\u number!==answer)
更改为while(secret\u number!=answer)
或
使用parseInt
将prompt(“此数字太高!”)
转换为int,然后将其分配给answer'answer=parseInt(prompt(“此数字太高!”);'
演示:我们不是已经讨论了为什么而循环会导致无限循环,并在这篇文章中展示了正确的方法吗:我们在那篇文章中也讨论了良好的编码实践,但您似乎没有采纳任何建议。
var secret_number=Math.floor((Math.random() * 10) + 1);
var answer=parseInt(prompt("Enter a number you want to try"));
while(secret_number!==answer)
{
if(answer == null || answer == "" ||isNaN(answer))
break;
if(answer>secret_number)
answer=prompt("This number is too high!");
else if(answer<secret_number)
answer=prompt("This number is too low!");
else
alert("You got it!");
}