Instrukcja if
Program wykonujący kod linia po linii nie jest zbyt interesujący, zapoznasz się teraz z instrukcjąif, która sprawi, że część programu będzie wykonywana tylko pod pewnym warunkiem. Instrukcjaifma postać:
Instrukcje zostaną wykonane tylko w przypadku, gdy warunek jest prawdziwy, jeśli nie, to wykonywanie programu przejdzie poza}bez wykonywania instrukcji wewnątrz bloku { }.
Najprostszymi warunkami są po prostutrueifalse. Są to stałe typubooleanoznaczające odpowiednio prawdę i fałsz. Oczywiście ręczne wpisanie w miejsce warunektruelubfalsenie ma najczęściej sensu. Warunkiem może być np. sprawdzenie, która z dwóch zmiennych jest większa. Służą do tego operatory<i>. Aby sprawdzić, czy coś jest większe lub równe można użyć<=i>=
| 123456 | vara=6;varb=9;if(b>a){console.log('b jest większe niż a');}; |
|---|---|
Warunkiem może też być sprawdzenie równości dwóch wartości operatorem===.
Instrukcja warunkowa składa się z jednego lub więcej bloków. Każdy z nich poprzedzony jest warunkiem(pozaelse). Istotne jest to, że spośród wszystkich bloków, zostanie wykonany jeden lub żaden.
Warunek - instrukcja warunkowa, zwracatruelubfalse
Blok - operacje zawarte pomiędzy{oraz}
if (warunek1) {
//kod do wykonania jeśli warunek1 okaże się prawdziwy
} else if (warunek2) {
//kod do wykonania jeśli warunek2 okaże się prawdziwy
} else {
//kod do wykonania jeśli żaden z poprzednich warunków nie okaże się prawdziwy
}
Zadanie 1
W tym zadaniu stworzysz fragment programu działającego na stronie internetowej gry komputerowej przeznaczonej tylko dla dorosłych np. Wiedźmin. Napisz program, który poprosi użytkownika o podanie wieku. Jeśli wynosi on co najmniej 18 lat wyświetl komunikat“Dziękuję, otwieram stronę.”
Skrócony zapis
W JavaScript jest możliwy skrócony zapis instrukcjiif. Wygląda on następująco.
| 1234 | if(warunek)instrukcja1;instrukcja2; |
|---|---|
W takim zapisieinstrukcja1jest wykonywana tylko, jeśli warunek jest prawdziwy, natomiastinstrukcja2jest wykonywana niezależnie od warunku.instrukcja2jest już pozaif.
W przypadku gdy w blokuifmamy tylko jedną linię kodu, to skrócony zapis pozwala nam nie pisać znaków{i}przez co nasz kod staje się trochę krótszy. Takie rozwiązanie ma jednak pewne wady. Załóżmy, że mamy instrukcjęifw zapisie skróconym.
| 12 | if(warunek)instrukcja1; |
|---|---|
Za jakiś czas chcemy dopisać kolejną linię kodu, która wykona się tylko w przypadku spełnienia warunku. Z przyzwyczajenia po prostu ją dopiszemy.
| 123 | if(warunek)instrukcja1;instrukcja2; |
|---|---|
Okaże się jednak, że nasz kod nie działa tak, jakbyśmy sobie tego życzyli. To co wpisaliśmy wyżej wygląda jak:
| 1234 | (warunek){instrukcja1;instrukcja2;} |
|---|---|
Jednak w rzeczywistości oznacza:
| 1234 | if(warunek){instrukcja1;};instrukcja2; |
|---|---|
Takie błędy czasami ciężko znaleźć, dlatego lepiej zawsze używać zapisu z blokiem kodu{ }.
Wartości nie uznawane za true
Wiemy już, żetrueoznacza wartość prawdziwą, afalsewartość nieprawdziwą. Jednak co w przypadku pozostałych wartości, takich jak liczby i ciągi znaków? Oto lista wartości, które nie są uznawane za prawdziwe:
falsenullundefinedpusty łańcuch
""liczba
0NaN
Nie przejmuj się, jeśli nie znasz wszystkich tych wartości, poznamy je dokładnie w dalszej części kursu.
Wszystkie wartości, które nie są na powyższej liście są uznawane za prawdziwe.
| 123 | if(3){instrukcje;}; |
|---|---|
W powyższym przykładzieinstrukcjezostaną wykonane.
Instrukcja if else
Spójrz jeszcze raz na przykład z początku tego rozdziału:
| 123456 | vara=6;varb=9;if(b>a){console.log('b jest większe niż a');}; |
|---|---|
Co się stanie w przypadku, gdy do zmiennejawstawimy wartość większą niż wartość zmiennejb? W takim przypadku blok kodu nie zostanie wykonany, a na ekran nie zostanie wypisana żadna informacja. Istnieje na szczęście instrukcjaelse, która rozwiązuje ten problem.
| 12345 | if(warunek){// blok if}else{// blok else}; |
|---|---|
Jeśli warunek jest prawdziwy, zostaną wykonane instrukcje w pierwszym bloku poif, jeśli nie to program wykona blok kodu znajdujący się poelse.
Zadanie 2
Nadszedł odpowiedni moment, aby trochę ulepszyć nasz program do sprawdzania wieku. W tym zadaniu Twoim celem jest napisanie programu, działającego podobnie jak ten z pierwszego zadania, z tą różnicą, że jeśli użytkownik ma mniej niż 18 lat, powinien zostać wyświetlony komunikat“Niestety nie masz dostępu do tej strony.”