Почему мой тест проходит, даже если он не соответствует моим логическим элементам? - PullRequest
0 голосов
/ 12 декабря 2018

Я работаю над телефонным валидатором в FCC.По какой-то причине это проходит 5555555555.Почему мои логические ворота пропускают это число?Для контекста, это не моя первая попытка этого кода.Я добавил несколько операторов, вложенные операторы if, и он до сих пор не уловил их.Почему это оценивается как правда?Вот код:

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

  }
  else {
    return false;
  }
}

telephoneCheck("5555555555");

1 Ответ

0 голосов
/ 12 декабря 2018

Вам необходимо пересчитать условие, которое вы сравниваете (|| '(' всегда будет истинным):

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

Это связано с тем, что && имеет больший приоритет, чем || оператор.Поэтому без скобок часть выражения '(' && str.length >= 10 вычисляется первой.Таким образом, конечное состояние становится str[0] === '1' || true, что всегда будет верным.Таким образом, ваш код будет возвращать true для любой строки длины> = 10

...