Jason. Cała informatyka w jednym miejscu!

Robimy dłuższy przystanek przy jednym z kolejnych typów danych. Teraz pomęczymy "boolean" w języku JavaScript, gdyż oprócz przedstawienia jego zastosowania należy jeszcze wyjaśnić to, co widzieliśmy w poprzednim artykule dlaczego można w tym języku wstawić za warunek samą zmienną i nikt się nie będzie o to pruł. Zapraszam serdecznie do środka!

O TYPIE DANYCH "BOOLEAN" W JĘZYKU JAVASCRIPT, ALE RÓWNIEŻ O WIELU JEGO WCIELENIACH!

Dla ścisłości: "boolean" to logiczny typ danych reprezentujący tylko jedną z dwóch wartości ("true" albo "false"). Stosuje się go do zmiennych, ale jego największym skupiskiem jest instrukcja warunkowa, w której wynik boolowski powstaje poprzez ustalenie prawdziwości podanego warunku. Na przykład warunek 6 > 2 da wynik prawdziwy, gdyż nierówność jest jak najbardziej spełniona.

Jednak nie o tym chciałem popisać w tym artykule. Głównie skupimy się na tym, co JESZCZE jest traktowane jak wartość logiczna, a czego nie widać na pierwszy rzut oka!

WARTOŚCI TRAKTOWANE JAK "FAŁSZ"

Możecie w tej chwili poczuć zdziwienie, natomiast..."boolean" w języku JavaScript pojawia się także w innych typach danych! Mało tego, jeśli inny typ danych posiada specyficzną wartość, jest już z góry "fałszywy". Oto zestawienie określonych wartości, które "nadają fałsz":

WARTOŚĆ DODATKOWA UWAGA
false Fałszywa wartość logiczna.
null Typ danych "null".
undefined Typ danych "undefined".
0 Wartość zero typu "number".
-0 Wartość "minus zero" typu "number".
0n Wartość zero typu "BigInt".
NaN "Not a Number" (pojawia się podczas wykonywania sprzecznych operacji np. próba skonwertowania liczby, która w rzeczywistości jest łańcuchem).
"" Pusty łańcuch znaków typu "string".

To wyjaśnia zagadkę dlaczego mamy prawo wstawić samą zmienną w miejsce warunku w instrukcji warunkowej i nie zostanie to potraktowane jak błąd składniowy:

let result = 80;

if(result) {
    // instrukcje
}

W ukryciu przed nami, w języku JavaScript wartość typu "number" zamieniana jest na "boolean". Ponieważ "result" ma jakąś konkretną wartość, nie jest typem "null" ani "undefined", ani żadną inną z powyższej tabeli, więc warunek zostanie uznany za spełniony i instrukcje zostaną wykonane.

ZWROT WARTOŚCI PRZEZ KONIUNKCJĘ

Że co?! Tak, dobrze czytacie. Jak pisałem we wprowadzeniu do serii, język JavaScript jest specyficzny i posiada w sobie parę dość napisać kontrowersyjnych manewrów, których nie znajdziecie w wielu innych powszechnie stosowanych językach wysokiego poziomu.

O samej budowie koniunkcji było już podczas opisywania operatorów relacyjnych, więc skupię się na istocie sprawy. JavaScript pozwala na użycie koniunkcji do zwracania konkretnej wartości dokładnie jak operator warunkowy, z tym że można dać tyle, ile się chce.

Najcięższe może być zrozumienie KIEDY dochodzi do zwrócenia jakiej wartości. Musicie wiedzieć jak działa koniunkcja. Funkcjonuje ona tak, że weryfikuje WSZYSTKIE warunki jeden po drugim i przestaje to robić kiedy natrafi na FAŁSZ, ponieważ jeden fałsz powoduje zwrócenie wyniku fałszywego i dalsze weryfikacje już nie są potrzebne, bo i tak to nie zmieni wyniku. Sprawdzając jedną wartość po drugiej, "odpuszcza sobie" kiedy dana wartość jest FAŁSZYWA. Dokładnie wtedy następuje zwrot konkretnej wartości – kiedy wartość jest fałszywa. Kiedy wszystkie "są prawdziwe", zwraca wtedy tę ostatnią. Mówimy o takich wartościach, że są "truthy" :).

Spójrzcie na najprostszy przykład:

let c = (true && 8 > 2 && "Conjunction");

Zmienna "c" otrzyma wartość łańcuchową, gdyż wszystkie wartości są prawdziwe, więc skupi się na ostatniej.

ZWROT WARTOŚCI PRZEZ ALTERNATYWĘ

Alternatywa tak samo, ona też może zwracać wartość spośród kilku wariantów! Ponieważ jednak ma inną zasadę działania, trzeba i tutaj poznać mechanizm. Jak możecie już wiedzieć, alternatywa także weryfikuje WSZYSTKIE warunki i przestaje to robić, kiedy natrafi na PRAWDĘ z racji tego, że to też już nie zmieni wyniku. Sprawdzając jedną wartość po drugiej, "odpuszcza sobie" kiedy dana wartość jest PRAWDZIWA. Więc kiedy dochodzi do zwrócenia wartości? Kiedy jest prawdziwa.

Oto prosty przykład:

let a = (false || null || 80);

i w ten sposób zmienna "a" otrzyma wartość liczbową 80, bo "false" i "null" nie należą do wartości "truthy".

Typ danych "boolean" w języku JavaScript

W języku JavaScript, typ danych "boolean" znajduje się również w pozostałych typach danych i przyjmuje on wartość fałszywą, jeżeli każdy z typów danych przyjmuje specyficzną wartość.


Nie zdziwię się, jeśli ten materiał przyniósł o wiele więcej znaków zapytania, niż wszystkie poprzednie razem wzięte. Można się pogubić, bo tego nie znajdziecie w takich językach jak C#, C++ albo Kotlin. Dziękuję za przeczytanie i pamiętajcie, że nie musicie tego opanowywać od razu. Spokojnie i po kolei, a wszystko będzie w porząsiu :).

PODOBNE ARTYKUŁY