javascript if 语句多个运算符失败
javascript if statement multiple operators failing
我有一个评估
的 if 语句
if(expression || expression &&
expression || expression){
//logic
}
出于某种我无法理解的原因,and 运算符之后的 else 语句未被计算。是否有一些我不知道的 if 语句规则?
这是我的代码:
const fillTable = function (array) {
let tbody = document.querySelector("#tblbody");
while (tbody.firstChild) {
tbody.removeChild(tbody.firstChild);
}
array.forEach(element => {
let region = regionOption.options[regionOption.selectedIndex].value;
let gender = genderOption.options[regionOption.selectedIndex].value;
elementGender = Object.values(element)[2];
elementRegion = Object.values(element)[3];
console.log(elementRegion + "+" + region);
console.log(elementGender + "+" + gender);
if (elementRegion === region || region === "All" &&
elementGender === gender || gender === "bot") {
let tr = document.createElement("tr");
tbody.appendChild(tr);
const values = Object.values(element);
values.forEach(element => {
let td = document.createElement("td");
td.appendChild(document.createTextNode(element));
tr.appendChild(td);
})
}
})
};
即使 if 语句中的性别不匹配,循环也会继续。
您可能被运算符优先级绊倒了。如果要将 &&
前后的布尔表达式分组,则显式分组:
if((expression || expression) &&
(expression || expression))
即使在没有运算符优先级规则的情况下,最好始终清楚明确地表达您要表达的逻辑。
看起来 if
条件中的 2 行都应该在它们自己的 grouping operator:
中
if (
(expression1 || expression2)
&& (expression3 || expression4)
) {
// ...
}
我猜你是故意的
if ((elementRegion === region || region === "All") &&
(elementGender === gender || gender === "bot"))
所有逻辑运算符都没有括号链接。
我有一个评估
的 if 语句if(expression || expression &&
expression || expression){
//logic
}
出于某种我无法理解的原因,and 运算符之后的 else 语句未被计算。是否有一些我不知道的 if 语句规则?
这是我的代码:
const fillTable = function (array) {
let tbody = document.querySelector("#tblbody");
while (tbody.firstChild) {
tbody.removeChild(tbody.firstChild);
}
array.forEach(element => {
let region = regionOption.options[regionOption.selectedIndex].value;
let gender = genderOption.options[regionOption.selectedIndex].value;
elementGender = Object.values(element)[2];
elementRegion = Object.values(element)[3];
console.log(elementRegion + "+" + region);
console.log(elementGender + "+" + gender);
if (elementRegion === region || region === "All" &&
elementGender === gender || gender === "bot") {
let tr = document.createElement("tr");
tbody.appendChild(tr);
const values = Object.values(element);
values.forEach(element => {
let td = document.createElement("td");
td.appendChild(document.createTextNode(element));
tr.appendChild(td);
})
}
})
};
即使 if 语句中的性别不匹配,循环也会继续。
您可能被运算符优先级绊倒了。如果要将 &&
前后的布尔表达式分组,则显式分组:
if((expression || expression) &&
(expression || expression))
即使在没有运算符优先级规则的情况下,最好始终清楚明确地表达您要表达的逻辑。
看起来 if
条件中的 2 行都应该在它们自己的 grouping operator:
if (
(expression1 || expression2)
&& (expression3 || expression4)
) {
// ...
}
我猜你是故意的
if ((elementRegion === region || region === "All") &&
(elementGender === gender || gender === "bot"))
所有逻辑运算符都没有括号链接。