У меня есть условие, как показано ниже, чтобы проверить переменные Qmart
и linearstatus
.
Хотя они имеют требуемые значения, моя инструкция if
всегда соответствует условию else
. Есть ли какая-то ошибка, которую я делаю для проверки этих значений?
var Qmart = "A2";
var linearstatus = "linear"
if (Qmart === ("E2" || "A2" || "B2" || "D2") && linearstatus == "linear") {
} else {
alert("it is an else condition");
}
3 ответа
Измените условие if на следующее
if ((Qmart === "E2" || Qmart === "A2" || Qmart === "B2" || Qmart === "D2") && (linearstatus == "linear")) {
} else {
alert("it is an else condition");
}
Надеюсь, это поможет
Если вы хотите проверить несколько значений, которые вы не можете использовать Qmart === ("E2" || "A2" || "B2" || "D2")
, вам нужно проверить каждое условие отдельно:
if ((Qmart === "E2" || Qmart === "A2" || Qmart === "B2" || Qmart === "D2") && linearstatus == "linear") {
} else {
alert("it is an else condition");
}
Вы можете спросить, почему ваш код не выдавал никаких ошибок во время выполнения. Проблема в том, что код
"E2" || "A2" || "B2" || "D2"
Является допустимым кодом JavaScript, и он возвращает первое истинное значение. Эта функция называется оценка короткого замыкания и часто используется в JavaScript. В вашем случае приведенное выше утверждение возвращает первое истинное значение, которое всегда равно «E2». Это означает, что ваш код идентичен
if (Qmart === "E2" && linearstatus == "linear")
И когда Qmart
равен A2
, условие оценивается как false
, и выполняется else
оператор.
Вы могли бы сделать что-то вроде этого.
var QMart = "E2",
linearstatus = "linear";
var conditions = ["E2", "A2", "B2", "D2"];
if (conditions.indexOf(QMart) !== -1 && (linearstatus == "linear")) {
console.log("In truthy condition");
} else {
console.log("it is an else condition");
}
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.