即使我的测试未达到我的逻辑门,为什么我的测试仍通过?

时间:2018-12-12 01:23:27

标签: javascript string if-statement logical-operators

我正在研究FCC上的电话验证器。出于某种原因,它通过了5555555555。为什么我的逻辑门会通过这个数字?对于上下文,这不是我第一次尝试此代码。我添加了多个语句,嵌套了if语句,但仍然无法捕获它。为什么这算是正确的?这是代码:

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

  }
  else {
    return false;
  }
}

telephoneCheck("5555555555");

1 个答案:

答案 0 :(得分:2)

您需要重述要比较的条件(|| '('始终为真):

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

这是由于&&的优先级比||运算符高。因此,如果没有括号,将首先计算表达式的'(' && str.length >= 10部分。因此最终条件变为str[0] === '1' || true,这将永远是正确的。因此,对于长度大于等于10的任何字符串,您的代码都将返回true。