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. Instrukcjaif
ma 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 prostutrue
ifalse
. Są to stałe typuboolean
oznaczające odpowiednio prawdę i fałsz. Oczywiście ręczne wpisanie w miejsce warunektrue
lubfalse
nie 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 zapisieinstrukcja1
jest wykonywana tylko, jeśli warunek jest prawdziwy, natomiastinstrukcja2
jest wykonywana niezależnie od warunku.instrukcja2
jest już pozaif
.
W przypadku gdy w blokuif
mamy 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ęif
w 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ż, żetrue
oznacza wartość prawdziwą, afalse
wartość 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:
false
null
undefined
pusty łańcuch
""
liczba
0
NaN
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ładzieinstrukcje
zostaną 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 zmienneja
wstawimy 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.”