[英]Giphy API - can't figure out how to call the data once I've made the AJAX call
[英]I've made an infinite loop and can't seem to figure out what I did wrong
我正在为一个简单的奇偶游戏编写程序,但我似乎无法弄清楚我的 while 循环有什么问题。
这样做的目的是,当用户没有输入赔率、赔率、偶数或偶数时,会出现警报,说“请输入赔率或偶数”。
但是,每当我运行代码时,它都会变成一个无限循环,重复警报,无论我输入什么。即使它是我想要的正确响应。
var oddEven = prompt('Would you like to be odds or evens?', 'Odds')
while (oddEven != 'odds' || oddEven != 'Odds' || oddEven != 'evens' || oddEven != 'Evens') {
oddEven = prompt('Please enter either odds or evens');
}
我对编程很陌生,几个月前才开始学习,所以任何建议都将不胜感激。
谢谢您的帮助:)
所以这是一个或,任何满足甚至一个的条件,都将评估为真。 所以如果我输入'boo',oddEven,='boo'。 因此 rest 评估为真。 更好的方法是
while (oddEven in ['odds', 'Odds' ...]):
oddEven = prompt('Please enter either odds or evens')
想象一个用户输入"Odds"
,你的if
语句会发生什么?
oddEven != 'odds'
是假的,但我们仍然需要检查其他的! 我们需要检查其他的,因为你已经写了||
这意味着“或” - javascript 将继续执行每个语句,直到其中一个为真。
oddEven != 'Odds'
是真的。 因为它是真的,你的 while 循环会立即继续,再次因为你使用了||
- 如果任何语句为真,代码将停止检查语句并继续循环。
有很多方法可以解决这个问题,但我认为以下方法最适合与您陷入困境的方式进行比较:
var oddEven = prompt('Would you like to be odds or evens?', 'Odds')
while (
!(oddEven == 'odds' || oddEven == 'Odds' || oddEven == 'evens' || oddEven == 'Evens')
) {
oddEven = prompt('Please enter either odds or evens');
}
现在在我们的示例中, oddEven == 'Odds'
为真,但因为整个部分都被 bang 否定了!
一开始,我们采取了相反的做法,太错误了。
一种更整洁的方法可能如下:
var oddEven = prompt('Would you like to be odds or evens?', 'Odds')
while (!['odds', 'Odds', 'evens', 'Evens'].includes(oddEven)) {
oddEven = prompt('Please enter either odds or evens');
}
这表示“虽然这个输入列表不包括oddEven
”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.