операторы javascript, использующие AND и OR в условных операторах

#javascript

#javascript

Вопрос:

Я пытаюсь отобразить сообщение, если только условные операторы удовлетворяют определенному требованию, но с тем, что я получаю, у меня ничего не получается. В настоящее время сценарий выглядит следующим образом

  if ((err.status === 401 amp;amp; !request.url.includes("users") || !request.url.includes("friends")) ) {
      console.log('hello')

    }
  

Чего я хочу добиться, так это когда статус равен 401 , а URL-адрес не содержит ни users , ни friends console should log hello , но он не работает

когда я изменяю код на этот

    if ((err.status === 401 amp;amp; !request.url.includes("users")) ) {
          console.log('hello')

        }
  

или это

  if ((err.status === 401 amp;amp; !request.url.includes("friends")) ) {
          console.log('hello')

        }
  

это работает, но я хочу, чтобы он проверял оба условия

Комментарии:

1. Просто измените || на amp;amp; , если вам нужно проверить, что URL не включает «пользователей» И не включает «друзей»

2. if(err.status==401 amp;amp; !(request.url.includes("users") || request.url.includes("friends")))

3. a И (не (b ИЛИ c)) === a И (не b) И (не c) en.wikipedia.org/wiki/De_Morgan’s_laws

Ответ №1:

Просто замените || на amp;amp;

 if (err.status === 401 amp;amp; !request.url.includes("users") amp;amp; !request.url.includes("friends")) {
    console.log('hello')
}
  

Если вы продумаете это в своей голове, это будет звучать следующим образом.

  1. status Должно быть 401
  2. И url не должны включать users
  3. И url не должны включать friends

Если вы хотите закодировать это так, как вы это написали:

  1. status Должно быть 401
  2. И url НЕ должны включать users OR friends

Вы все еще могли бы это сделать, но только немного по-другому:

 if (err.status === 401 amp;amp; !(request.url.includes("users") || request.url.includes("friends"))) {
    console.log('hello')
}
  

Оба этих кода означают абсолютно одно и то же, просто напишите это так, как вам больше нравится. Но всегда пишите это так, как это происходит в вашей голове. Просто введите то, что вы думаете 🙂

Ответ №2:

Для проверки строк я предлагаю вам использовать регулярные выражения (это может позволить более сложные проверки)

 if(error.status === 401 amp;amp; !/users|friends/.test(request.url)){
  console.log("hello")
}
  

Ответ №3:

Способ, параллельный формулировке:

 if(err.status==401 amp;amp; !(request.url.includes("users") || request.url.includes("friends")))
  

Визуально:

 if
(
  err.status==401
  amp;amp;
  !
    (
      request.url.includes("users")
      ||
      request.url.includes("friends")
    )
)
  

Ответ №4:

ваш код почти в порядке, просто небольшая проблема со скобками ().

формат является :

 if( cond1 amp;amp; !(  cond2 || cond3  ) ) {
 ----- your logic ------
}
  

итак, ваш пример должен быть таким :

 if ( err.status === 401 amp;amp; !( request.url.includes("users") || request.url.includes("friends") ) )  {
            console.log('hello')
}
  

Комментарии:

1. да, вы правы. Я собираюсь изменить код. спасибо, что указали на ошибку.