&&, ||, !

Operatory logiczne I (&&), LUB (||) i NIE (!). Łączą warunki, a && i || zwracają jedną ze swoich stron.

Zwraca
&& i || zwracają wartość jednej ze stron (niekoniecznie typu boolean). ! zawsze zwraca true lub false.
Na tej stronie

Przykład

#
JavaScript
const isLoggedIn = true
const fuel = 0

console.log(isLoggedIn && fuel > 0)
console.log(isLoggedIn || fuel > 0)
console.log(!isLoggedIn)
Konsola
false
true
false

Definicja i zastosowanie

#

&& (i) jest prawdziwe, gdy obie strony są prawdziwe, || (lub), gdy prawdziwa jest co najmniej jedna, a ! (nie) odwraca wartość logiczną. Najczęściej łączysz nimi warunki w if, np. if (isLoggedIn && hasFuel).

&& i || nie zawsze zwracają true lub false, tylko jedną ze swoich stron. a || b zwraca a, jeśli jest prawdziwe (truthy), a w przeciwnym razie b. a && b zwraca a, jeśli jest fałszywe (falsy), a w przeciwnym razie b. Podwójne !!value zamienia dowolną wartość na true lub false.

Oba operatory działają na skróty: prawa strona nie jest obliczana, gdy wynik jest znany już po lewej. Dzięki temu user && user.name nie rzuci błędu dla null. && ma wyższy priorytet niż ||, a operatory ||= i &&= przypisują wartość tylko pod odpowiednim warunkiem.

Składnia

#
Składnia
a && b
a || b
!a
!!a
a ||= b
a &&= b

Więcej przykładów

#
Operatory zwracają wartości
JavaScript
console.log('Ania' || 'Gość')
console.log('' || 'Gość')
console.log('Ania' && 'zalogowana')
console.log(0 && 'nigdy')
console.log(!!'tekst', !!0)
Konsola
Ania
Gość
zalogowana
0
true false
Obliczanie na skróty
JavaScript
function loadAvatar() {
  console.log('Pobieram avatar...')
  return 'avatar.png'
}

const cached = 'cache.png'
const avatar = cached || loadAvatar()

console.log(avatar)
Konsola
cache.png

loadAvatar() nie zostało wywołane, bo lewa strona || była już prawdziwa.

Przypisania ||= i &&=
JavaScript
const player = { nickname: '', score: 40 }

player.nickname ||= 'Anonim'
player.score &&= player.score * 2

console.log(player)
Konsola
{ nickname: 'Anonim', score: 80 }

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Uważaj na || przy wartościach domyślnych. Zastąpi również 0, "" i false, które mogą być poprawnymi danymi. W takich przypadkach użyj ??.
  • W złożonych warunkach dodawaj nawiasy, nawet jeśli priorytet by wystarczył: (isAdmin || isMentor) && isActive czyta się jednoznacznie.
  • W Reakcie zapis {count && <Badge />} wyświetli 0, gdy count wynosi zero. Bezpieczniej napisać {count > 0 && <Badge />}.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.