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,
}
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;
}
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
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));
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'
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!';
}
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!';
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.