初学者的问题,很抱歉,如果这不是学习JS
中逻辑如何工作的正确地方,我不能解决这个问题
if (firstSymbol === "A" || "a" || "D" || "d") {
if (secondSymbol === "z") {
alert("It does!");
break;
}
}
我希望它会说“确实是这样!”如果firstSymbol
是A、a、D或d,而secondSymbol
是z,则中断,但出于某种原因,它会说“它是!”并且不管firstSymbol
是什么都中断,并且只检查secondSymbol
是否是z。
发布于 2019-05-30 20:42:18
因为您正在检查"a"
是否为真-它始终是真的:
console.log(!!"a");
在这种情况下,您应该使用includes
和&&
:
const firstSymbol = "D";
const secondSymbol = "z";
if (["A", "a", "D", "d"].includes(firstSymbol) && secondSymbol == "z") {
console.log("It does!");
}
发布于 2019-05-30 20:44:13
function matchSecondSymbol(firstSymbol, secondSymbol) {
// By making FirstSymbol Uppercase, we can remove the other two conditions
firstSymbol = firstSymbol.toUpperCase();
if (['A', 'D'].includes(firstSymbol) && secondSymbol === "z") {
console.log('it Does');
}
else {
console.log('it does not');
}
}
matchSecondSymbol('a', 'z');
matchSecondSymbol('z', 'z');
matchSecondSymbol('a', 'y');
发布于 2019-05-30 20:58:27
优先顺序决定
在每种编程语言中,符号都是按照它们的优先顺序处理的。
简而言之:
就像其他人已经解释过的,你的任务
firstSymbol === "A" || "a" || "D" || "d"
将被处理为
(firstSymbol === "A") || ("a") || ("D") || ("d")
指向如何处理逻辑运算符的链接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
https://stackoverflow.com/questions/56378482
复制相似问题