Praktyczne przykłady AND i OR

Przygotowałem dodatkowe przykłady do tego, jak można wykorzystać możliwość AND oraz OR w sytuacji, gdy operatory te zwracają konkretne wartości.

Przykład AND

Na początek zobaczmy przykład z operatorem AND.

W naszym przykładzie posiada my prosty obiekt, reprezentujący użytkownika:

let user = {
  isLogged: true,
}
1
2
3

Posiadając taki obiekt, chcemy sprawdzić, czy w ogóle obiekt nie jest null i sprawdzić, czy user faktyczne jest zalogowany, standardowo kod może wyglądać tak:

function isUserLoggedNormal(user) {
  if (user && user.isLogged) {
    return true;
  }
  return false;
}
1
2
3
4
5
6

Stworzyliśmy zwykłą funkcję z instrukcją if. Sprawdzamy, czy obiekt user nie jest null i czy pole isLogged ma wartość true. Jeżeli tak to zwracamy true w innym wypadku false. Nasza funkcja zawsze jawnie zwraca typ boolean.

Możemy ten zapis jednak wykonać nieco krócej, z operatorem AND:

function isUserLogged(user) {
  return Boolean(user && user.isLogged);
}

console.log(isUserLogged(user)); // true
1
2
3
4
5

W tym przypadku, jeżeli user istnieje, to zwracana jest wartość true z pola isLogged. Jeżeli natomiast user nie istnieje, to zwracana jest wartość ze zmiennej user.

Jeżeli się zastanawiacie, dlaczego robię konwersję do typu boolean to zobaczmy ten przykład:

user = null;
console.log(isUserLogged(user));
1
2

Jeżeli user byłby null, otrzymałbym wartość null przy operatorze AND. Ponieważ nazwa mojej funkcji wskazuje że będzie zwracała typ boolean dokonuję więc konwersji na ten typ.

Takim prostym sposobem wykorzystując operator AND mogę sprawdzić, czy user istnieje i czy jest zalogowany.

Przykład OR

W sytuacji, gdy chcemy zwrócić jakaś domyślną wartość, gdy pierwsza wartość nie istnieje, możemy użyć operatora OR.

function sayHello(greetings) {
  return greetings || 'Have a nice day!';
}

console.log(sayHello()) // 'Have a nice day!'
console.log(sayHello('Hello there')) // 'Hello there'
1
2
3
4
5
6

W tym przypadku, jeżeli do funkcji nie zostanie przesłana wartość zostanie zwrócona domyślna wartość Have a nice day!. Jeżeli natomiast zmienna greetings nie będzie wartością pustą, zwrócona zostanie wartość z tej zmiennej. Jest to fajne i proste zabezpieczenie przed użyciem pustej wartości.

Tradycyjna implementacja mogłaby wyglądać tak:

function sayHelloNormal(greetings) {
  if (greetings) {
    return greetings;
  }
  return 'Have a nice day!';
}
1
2
3
4
5
6

Jest to nieco dłuższy i bardziej rozwlekły kod. Oczywiście można go zapisać jeszcze krócej za pomocą ternary operatora, którego jeszcze omówimy w innym dziale:

return greetings ? greetings : 'Have a nice day!';
1

Zdecydowanie jednak rozwiązanie z operatorem OR jest bardziej zwięzłe.

Omówiliśmy zaledwie dwa przykłady użycia tych operatorów przy porównywaniu wartości. Taki kod często możecie spotkać w aplikacjach napisanych w JavaScript i na pewno spotkacie się z wieloma innymi przykładami.