【问题标题】:Why does my test pass, even though it doesn't meet my logic gate?为什么我的测试通过了,即使它不符合我的逻辑门?
【发布时间】:2018-12-12 01:23:27
【问题描述】:

我正在开发 FCC 的电话验证器。出于某种原因,这通过了5555555555。为什么我的逻辑门会通过这个数字?对于上下文,这不是我第一次尝试此代码。我添加了多个语句,嵌套了 if 语句,但它仍然没有捕捉到它。为什么这评估为真?代码如下:

function telephoneCheck(str) {
  if(str[0] === '1' || '(' && str.length >= 10) {
  return true;

  }
  else {
    return false;
  }
}

telephoneCheck("5555555555");

【问题讨论】:

  • || '(' 没有任何意义。非空字符串总是真实的。
  • 每次要检查多个值时都需要重述条件

标签: javascript string if-statement logical-operators


【解决方案1】:

您需要重申您正在比较的条件(|| '(' 将始终为真):

if(str[0] === '1' || str[0] === '(' && str.length >= 10) {

这是因为&& 的优先级高于|| 运算符。因此,如果没有括号,表达式的 '(' && str.length >= 10 部分将首先被计算。因此,最终条件变为str[0] === '1' || true,这将始终为真。因此,对于任何长度 >= 10

的字符串,您的代码都会返回 true

【讨论】:

  • 谢谢,我会接受你的回答。这让事情清楚了很多,我一定会牢记在心。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 2020-10-24
相关资源
最近更新 更多