为什么我的测试通过了,即使它不符合我的逻辑门?

Why does my test pass, even though it doesn't meet my logic gate?

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

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

  }
  else {
    return false;
  }
}

telephoneCheck("5555555555");

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

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

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

的字符串,您的代码都会 return 为真