!=运算符在与||结合时不在while循环条件下工作OR

时间:2016-06-01 22:17:19

标签: javascript

我有一个基本的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);

谢谢!

3 个答案:

答案 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