我的if语句是否忽略我的条件?

问题描述 投票:0回答:4

我正在使用计算器应用程序,并且给每个按钮一个与它们的数字或字符相对应的值。

我有一个if条件,该条件应该检查​​用户是否单击了除“ C”或“ del”(删除)按钮以外的任何按钮。如果他们确实单击“ C”或“ del”按钮,则不会在userInput或显示中都未添加任何值。

我遇到的问题是,即使单击“ C”和“ del”,if语句仍然会执行。

let userInput = '';
const display = document.querySelector('.display');
const buttons = document.querySelectorAll('input[type="button"]');


for (let button of buttons) {

    const value = button.value;

    if (value !== "C" || value !== "del"){
        button.addEventListener("click", function(){
            userInput+=value;
            display.innerHTML += value;
            console.log(button.value);
        });
    }
}
javascript if-statement dom
4个回答
0
投票

[我认为人们已经很清楚地说明了您进行if陈述的方式,它总是会成为事实,因为它不是'C'还是不是'del'总是正确的'。

但是,我想我会添加另一种方法:使用数组,并使用array.includes函数

const badValues = ['C', 'del'];
if (badValues.includes(value)) {
   // value is either C or del
} else {
   // value is not C or del
}

2
投票

您需要使用AND运算符,因为它不应为'C'和'del']

value != "C" && value != "del"

1
投票

您需要一个logical AND &&运算符,因为两个条件都必须为真。

&&

0
投票

如果我们在这里写出布尔真值表,很容易看到发生了什么:

value !== "C" && value !== "del"

将其设为+----------+------------------+--------------------+--------+ | value | value != "C" (A) | value != "del" (B) | A || B | +----------+------------------+--------------------+--------+ | "C" | false | true | true | | "del" | true | false | true | | "banana" | true | true | true | +----------+------------------+--------------------+--------+ 的唯一方法是,如果A和B条件都为false,但是这将要求false同时为value "C"。对于字符串,这是不可能的。因此,由于使用了逻辑或,因此无论输入如何,输出始终为"del"

相反,实际上要使用逻辑AND:

true
© www.soinside.com 2019 - 2024. All rights reserved.