Javascript 为什么我的测试通过了,尽管它没有';不符合我的逻辑门?

Javascript 为什么我的测试通过了,尽管它没有';不符合我的逻辑门?,javascript,string,if-statement,logical-operators,Javascript,String,If Statement,Logical Operators,我在FCC做电话验证器。由于某种原因,这会通过5555。为什么我的逻辑门会通过这个数字?在上下文中,这不是我第一次尝试使用这段代码。我添加了多个语句,嵌套了if语句,但它仍然无法捕获它。为什么这是真的?代码如下: function telephoneCheck(str) { if(str[0] === '1' || '(' && str.length >= 10) { return true; } else { return false; }

我在FCC做电话验证器。由于某种原因,这会通过
5555
。为什么我的逻辑门会通过这个数字?在上下文中,这不是我第一次尝试使用这段代码。我添加了多个语句,嵌套了if语句,但它仍然无法捕获它。为什么这是真的?代码如下:

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

  }
  else {
    return false;
  }
}

telephoneCheck("5555555555");

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


这是因为
&
的优先级高于
|
运算符。因此,如果没有括号,表达式的
'('&&str.length>=10
部分将首先求值。因此最终条件变为
str[0]=='1'| | true
始终为true。因此,对于长度>=10的任何字符串,您的代码都将返回true(“没有任何意义。非空字符串总是真实的。每次要检查多个值时,都需要重新说明条件。谢谢,我会接受你的答案。这会让事情变得更清楚,我以后一定要记住这一点。
if(str[0] === '1' || str[0] === '(' && str.length >= 10) {