#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')
}
Если вы продумаете это в своей голове, это будет звучать следующим образом.
status
Должно быть401
- И
url
не должны включатьusers
- И
url
не должны включатьfriends
Если вы хотите закодировать это так, как вы это написали:
status
Должно быть401
- И
url
НЕ должны включатьusers
ORfriends
Вы все еще могли бы это сделать, но только немного по-другому:
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. да, вы правы. Я собираюсь изменить код. спасибо, что указали на ошибку.