首页 > 解决方案 > 语句中的 Javascript 多个 OR

问题描述

我有一个非常基本的声明,它没有输出正确的值,但我不明白为什么。

我的变量具有以下值:

var bedroomNums = "0_1"

然而,此输出显示为true在 Chrome 控制台中:

bedroomNums != ("0_0" || "0_1" || "0_2")

我正在尝试创建一个IF声明来表示:

if bedroomNums doesnt equal X or Y or Z then the statement is true

我努力了:

bedroomNums != "0_0" || bedroomNums != "0_1" || bedroomNums != "0_2"

但这也显示为真

我哪里错了

标签: javascript

解决方案


您实际上正在寻找的是一个合乎逻辑AND的 ,它将确保满足每个条件:

if (bedroomNums != "0_0" && bedroomNums != "0_1" && bedroomNums != "0_2") {
    // `bedroomNums` is not one of "0_0", "0_1", "0_2"
}

如果其中一项检查返回FALSE(即bedroomNums设置为这些值之一),则不会执行大括号内的代码。


表达相同条件的另一种方法是将您要比较的每个值枚举到一个 Array 结构中,然后使用以下命令检查以确保bedroomNumsArray 中不存在该值Array.prototype.includes()

if (!["0_0", "0_1", "0_2"].includes(bedroomNums)) {
    // `bedroomNums` is not one of "0_0", "0_1", "0_2"
}

这种风格通常在您的程序必须动态枚举条件的所有可能值的情况下(基于一些其他逻辑或数据源)更有帮助。


推荐阅读