Warunki - lomilowka.pl

Transkrypt

Warunki - lomilowka.pl
Warunki
Jeżeli kupisz mi zabawkę, to nie będę płakał.
Powyższa wypowiedź to typowy warunek, który steruje działaniami rodziców ^^.
Tak samo Javascript udostępnia nam instrukcje warunkowe, które sterują przebiegiem naszego
programu.
Instrukcja warunkowa wykonuje wybrany kod, w zależności czy wartość wyrażenia jest prawdą
(true) czy fałszem (false).
if
Instrukcja if sprawdza dany warunek, i w zależności od tego czy zwróci true lub false wykona lub
nie wykona sekcję kodu zawartą w klamrach:
Ogólna postać tego wyrażenia wygląda następująco:
?
if (warunek) {
...instrukcje jeżeli warunek jest poprany
}
Przykładowo:
?
var liczba = 1;
if (liczba == 1) {
alert('Liczba równa się 1');
}
W każdym z takich warunków stosujemy operatory dzięki którym możemy tworzyć bardziej
"zawiłe" warunki:
?
var zmienna = 2;
if (!zmienna == 2) .... //jeżeli NIE zmienna równa się dwa
if (zmienna != 2) ..... //jeżeli zmienna jest różna od 2
if (zmienna >= 2) ..... //jeżeli zmienna jest większa równa 2
itp.
Możemy także zagnieżdżać wyrażenia w wyrażeniach np:
?
var liczba = 1;
var druga_liczba = 2;
if (liczba > 0) {
if (druga_liczba > 0) {
...//jeżeli liczba > 0 i druga_liczba > 0
}
}
//to samo co powyżej
if (liczba > 0 && druga_liczba > 0) {
...//kod wykonywany jeżeli liczba > 0 i druga_liczba > 0
}
else
Możemy sprawdzić przeciwieństwo warunku if poprzez zastosowanie klauzuli else:
?
var liczba = 5;
if (liczba == 1) {
alert('Liczba równa się 1')
} else {
alert('Liczba nie równa się 1')
}
else if
Istnieje też możliwość dokonania kilku sprawdzeń pod rząd z wykorzystaniem klauzuli else if.
?
if (liczba > 5) {
alert('Liczba jest większa od 5')
} else if (liczba < 5) {
alert('Liczba jest mniejsza od 5')
} else {
alert('Liczba równa się 5');
}
?
if (liczba > 5) {
alert('Liczba jest większa od 5')
} else if (liczba < 5) {
if (liczba > 3) {
alert('Liczba jest większa od 3 ale mniejsza od 5');
} else if (liczba <= 3) {
alert('Liczba jest mniejsza lub równa 3');
}
}
Wynikiem sprawdzenia każdego warunku jest wartość true oraz false. Warunkiem wcale nie musi
być równanie matematyczne, ponieważ wynik jest rzutowany na wartość boolean (czyli przyjmuje
true/false). Każda wartość zmiennej, różna od 0, pustego ciągu znaków i od wartości false da nam
w wyniku true.
Przykładowo:
?
var zmienna = 1; //1 = true
if (zmienna) {
alert('Tak')
} else {
alert('Nie')
}
//wypisze się Tak
var zmienna = 'przykład'; //przykład = true
if (zmienna) {
alert('Tak')
} else {
alert('Nie')
}
//wypisze się Tak
var zmienna = false; //false = false
if (zmienna) {
alert('Tak')
} else {
alert('Nie')
}
//wypisze się Nie
var zmienna = 0; //0 = false
if (zmienna) {
alert('Tak')
} else {
alert('Nie')
}
//wypisze się Nie
var zmienna = -1; //-1 = true
if (zmienna) {
alert('Tak')
} else {
alert('Nie')
}
//wypisze się Tak
switch
Instrukcja switch jest kolejnym sposobem testowania warunków działającym na zasadzie
przyrównania wyniku do podanych przypadków.
Konstrukcja tego wyrażenia ma postać:
?
switch (wyrażenie) {
case przypadek1:
//fragment wykonywany gdy rezultat wyrażenia jest równy
rezultat1 - potrzebuje break;
break;
case przypadek2:
//fragment wykonywany gdy rezultat wyrażenia jest równy
rezultat2 - potrzebuje break;
break;
default:
//fragment wykonywany gdy powyższe rezultaty nie są równe
rezultatowi wyrażenia - nie potrzebuje break;
}
Jak widać powyżej każdy przypadek kończy się instrukcją break, która kończy wykonywanie
instrukcji switch. Jeżeli pominiemy tą instrukcję, wtedy zostaną wykonane kolejne sprawdzenia, co
często może powodować błędy. Dodatkowo instrukcja switch ma specjalny przypadek default który
będzie wybierany, gdy wszystkie inne przypadki będą błędne.
Przykładowo:
?
var numer = 4;
//poniższy warunek zwróci "Numer równa się cztery"
switch (numer) {
case 1: alert('Numer równa się jeden'); break;
case 2: alert('Numer równa się dwa'); break;
case 3: alert('Numer równa się trzy'); break;
case 4: alert('Numer równa się cztery'); break;
default: alert('Nie wiem ile równa się numer');
}
var narzedzie = "obcęgi";
//poniższy warunek zwróci "Nie wiem co to za narzędzie"
switch (narzędzie) {
case 'wiertarka': alert('Wybrałeś wiertarkę'); break;
case 'śrubokręt': alert('Wybrałeś śrubokręt'); break;
case 'piła': alert('Wybrałeś piłę'); break;
case 'młotek': alert('Wybrałeś młotek'); break;
default: alert('Nie wiem co to za narzędzie');
}
var zwierzak = "kot";
//poniższy warunek przeprowadzi sprawdzenie 3 przypadków, ponieważ
2 pierwsze nie mają instrukcji break;
switch (zwierzak) {
case 'pies' :
case 'kot' :
case 'chomik' :
alert('Domowe zwierzątka');
break;
case 'wielbłąd' :
alert('Pustynne zwierzątko');
break;
default:
alert('Inne zwierzątko');
break;
}
operator ?
Operator ? daje nam takie same możliwości co instrukcja if, z tym, że jest jej skróconą wersją.
Ogólna postać zastosowania tego operatora wygląda tak:
?
(wyrażenie) ? zwróć_jeżeli_wyrażenie_true :
zwróć_jeżeli_wyrażenie_false
Przykładowo wyrażenie if możemy zapisać w jego skróconej wersji:
?
var i = 1;
var jaka = '';
if (i > 0) {
jaka = 'dodatnia';
} else {
jaka = 'ujemna';
}
//to samo tylko w skróconej wersji
jaka = (i > 0) ? 'dodatnia' : 'ujemna';
Przykłady zastosowania:
?
var x = 3;
(x%2==0)?'parzysta':'nieparzysta' //zwróci nieparzysta
var wiek = 21
var status = (wiek<18) ? "jesteś za młody" : "zapraszamy na seans"
//wypisze się "zapraszamy na seans"
var imie = 'Ola';
alert( (imie=='Ola') ? 'Masz na imię Ola' : 'Nie masz na imię Ola' )
//pokaże Masz na imię Ola
//zagnieżdzone wyrażenia
//sprawdzam liczbę znaków "z" i dostawiam odpowiednie słowo
//np:
//8 znaków
//23 znaki
//14 znaków
//76 znaki
var znaki = 32;
var slowo = (znaki==1) ? "znak" : ( ((znaki%10>1 && znaki%10<5) &&
znaki>20) ? "znaki" : "znaków");
alert(znaki + ' ' + slowo); //wypisze się 32 znaki