首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么总是返回true?

为什么总是返回true?
EN

Stack Overflow用户
提问于 2019-05-30 20:38:34
回答 3查看 89关注 0票数 2

初学者的问题,很抱歉,如果这不是学习JS中逻辑如何工作的正确地方,我不能解决这个问题

if (firstSymbol === "A" || "a" || "D" || "d") {
    if (secondSymbol === "z") {
        alert("It does!"); 
        break;
    }
}

我希望它会说“确实是这样!”如果firstSymbol是A、a、D或d,而secondSymbol是z,则中断,但出于某种原因,它会说“它是!”并且不管firstSymbol是什么都中断,并且只检查secondSymbol是否是z。

EN

回答 3

Stack Overflow用户

发布于 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!");
}

票数 2
EN

Stack Overflow用户

发布于 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');

票数 1
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56378482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档