Kurs Javascript - warunki logiczne
Transkrypt
Kurs Javascript - warunki logiczne
STRONA POCZĄTKOWA Wybierz temat 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: 1 2 3 4 if (warunek) { ...instrukcje jeżeli warunek jest poprany } ? Przykładowo: 1 2 3 4 5 6 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: 1 2 3 4 5 6 7 8 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: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 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 converted by Web2PDFConvert.com Możemy sprawdzić przeciwieństwo warunku if poprzez zastosowanie klauzuli else: 1 2 3 4 5 6 7 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. 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 10 if (liczba > 5) { alert('Liczba } else if (liczba alert('Liczba } else { alert('Liczba } ? jest większa od 5') < 5) { jest mniejsza od 5') 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: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 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') converted by Web2PDFConvert.com 32 33 34 35 36 37 38 39 40 41 42 43 44 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ć: 1 2 3 4 5 6 7 8 9 10 11 ? 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: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 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; converted by Web2PDFConvert.com 36 37 38 39 40 41 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: 1 2 (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: 1 2 3 4 5 6 7 8 9 10 11 12 13 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: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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 converted by Web2PDFConvert.com