我有一个基本的do while循环,我在执行提示符的输入值,然后在条件中运行它。出于某种奇怪的原因,当我使用!==和||时在相同的条件下,它不起作用。我知道我可以为它添加额外的参数来与使用isNaN和其他逻辑运算符进行比较,但是为什么这不起作用并且我希望这条路线能够工作是没有意义的。
var number;
do {
number = parseInt(prompt('Enter 1 or 2'));
}
while ((number !== 1) || (number !== 2));
如果我使用单个表达式运行以下代码进行比较,则它没有问题,但在前面的语句中它不喜欢有多个条件要进行比较。
var number;
do {
number = parseInt(prompt('Enter 1 or 2'));
}
while (number !== 1);
谢谢!
答案 0 :(得分:4)
如果数字为1,那么LHS是假的,但它不是2,因此RHS为真,整体测试为真。
如果数字不是1,则LHS为真,整体测试为真。
你需要&&
所以你要说如果数字不是1而且它也不是2 。
答案 1 :(得分:0)
从保证至少1次计算开始。 在你的情况下2或比较,它应该是&&操作
在测试退出
之前保证1计算var number;
do {
number = parseInt(prompt('Enter 1 or 2'));
}
while ((number !== 1) && (number !== 2));
不保证
var number;
while ((number !== 1) && (number !== 2));
{
number = parseInt(prompt('Enter 1 or 2'));
}
答案 2 :(得分:0)
这是一个逻辑问题,它必然会在任何情况下都是真实的。
var number;
do {
number = parseInt(prompt('Enter 1 or 2'));
}
while ((number !== 1) || (number !== 2));
number = undefined;// or any other value !==1 AND !==2, then true
number = 1;// !==2 BUT ==1, then true
number = 2;// !==1 BUT ==2, then true
您需要同时检查两个语句是否true
,而不是一个或另一个。
var number;
do {
number = parseInt(prompt('Enter 1 or 2'));
}
while ((number !== 1) && (number !== 2));
number = undefined;// or any other value !== 1 AND !== 2, then true
number = 1;// !== 2 BUT == 1, then false
number = 2;// !== 1 BUT == 2, then false