while循环满足条件后不停止

while-loop doesnt stop after meeting the condition

刚开始使用 Javascript 并努力编写一些非常简单的代码:

"use strict"; 
    function math () {
        if (action == "+") {
            return answer = firstNumber + secondNumber
        }
        else if (action == "-") {
            return answer = firstNumber - secondNumber
        }
        else {
            while(action != "+" || action != "-") {
                action = prompt('Write an action (only "+" and "-" supported!!!):');
            }
        }
    }
    math(firstNumber, secondNumber,action);
    alert(answer);

即使循环中的条件为假,循环仍会执行。你能解释一下出了什么问题吗?请不仅仅是解决方案。

while(action != "+" || action != "-") 将始终计算为 True

while(action != "+" && action != "-")就是您要找的

这里的错误在于while循环条件语句。

while(action != "+" || action != "-")

如果 action 不等于“+”或“-”,此语句将继续循环。如果 action 是“+”,我们继续循环,因为 action 不等于“-”。要解决此问题,请将您的运算符更改为 && 而不是 ||像这样:

while(action != "+" && action != "-")

首先,您不需要在那里编写 while 块,因为编译器将检查前两个 if 语句,即 if 和 else if(按顺序)并且不会执行其中任何一个,这意味着action != "+" 还有 != "-" 所以你可以直接这样写 :

"use strict"; 
function math () {
    if (action == "+") {
        return answer = firstNumber + secondNumber
    }
    else if (action == "-") {
        return answer = firstNumber - secondNumber
    }
    else {
        action = prompt('Write an action (only "+" and "-" supported!!!):');
        }
    }
}
math(firstNumber, secondNumber,action);
alert(answer);

它也不会停止,因为它会 运行 直到 while 条件为 False,但如果操作是 !=“+”或“-”,这意味着 while 条件将始终为真,因为错误的操作有被采用,所以 while 循环将 运行 无限...尝试用“if 语句”或 || 替换 while while 循环中的运算符与 && operator

我猜,您只是在制定条件时犯了一个错误,很可能只想继续循环,直到输入的操作不是这两个值中的任何一个。因此,您必须使用 and && 而不是 or || 运算符。 换句话说:您想继续,直到该值不是加号也不是减号。