Instrukcja switch
Instrukcja switch ma bardzo podobne zastosowanie do konstrukcji if else if. Wygląda ona następująco:
Jeśliwyrażeniejest równe n1 zostaną wykonane instrukcje 1 .W przeciwnym wypadkuwyrażeniezostanie porównane zn2, jeśli będą sobie równe, to zostaną wykonaneinstrukcje2. Jeśli nasze wyrażenie zostało dopasowane do żadnego przypadku, zostaną wykonane instrukcje domyślne, w naszym przypadku instrukcje3 Instrukcja break
W poprzedniej części rozdziału zauważyłeś pewnie, że po instrukcjach danego przypadku występuje instrukcja break. Aby zrozumieć dlaczego się tam znajduje musimy lepiej poznać działanie switch. Spójrzmy na jej przykład bez użyciabreak.
Przeanalizujemy teraz dokładnie powyższy kod. Jeśli wyrażenie jest równen1to sterowanie programu zostanie przeniesione do linii 3 i zostaną wykonaneinstrukcje1. Instrukcjaswitchnie zrobi nic więcej, ona tylko przeniesie sterowanie do odpowiedniej linii. Po wykonaniu linii 3 program przejdzie do linii 4 itd. Zostaną wykonaneinstrukcje2orazinstrukcje3. Teraz już się pewnie domyślasz za co jest odpowiedzialna instrukcjabreakJej zadaniem jest przeniesienie sterowania poza aktualny blok kodu, czyli w naszym przypadku poza}. Zapomnienie obreakw tym przypadku jest poważnym błędem o którym niestety nie zostaniemy poinformowanie podczas wykonywania programu.
Instrukcjabreakznajduje jeszcze zastosowanie w innych pętlach, które poznamy w dalszej części kursu.
switch (moonPhase) {
case 'full':
console.log\('Howwwwlll!!'\);
break;
case 'mostly full':
console.log\('Arms and legs are getting harrier'\);
break;
case 'mostly new':
console.log\('Back on two feet'\);
break;
default:
console.log\('Invalid moon phase'\);
break;
}
var prompt = require('sync-prompt').prompt;
var brand = prompt('Wpisz markę ');
brand = brand.toLowerCase();
switch(brand) {
case 'bmw':
console.log\('Niemcy'\);
break;
case 'mazda':
console.log\('Japonia'\);
break;
case 'bentley':
console.log\('Wielka Brytania'\);
break;
default:
console.log\('Nie znam tej marki.'\);
};
nstrukcja break
W poprzedniej części rozdziału zauważyłeś pewnie, że po instrukcjach danego przypadku występuje instrukcjabreak. Aby zrozumieć dlaczego się tam znajduje musimy lepiej poznać działanieswitch. Spójrzmy na jej przykład bez użyciabreak.
| 12345678 | switch(wyrazenie){casen1:instrukcje1;casen2:instrukcje2;default:instrukcje3;}; |
|---|---|
Przeanalizujemy teraz dokładnie powyższy kod. Jeśli wyrażenie jest równen1to sterowanie programu zostanie przeniesione do linii 3 i zostaną wykonaneinstrukcje1. Instrukcjaswitchnie zrobi nic więcej, ona tylko przeniesie sterowanie do odpowiedniej linii. Po wykonaniu linii 3 program przejdzie do linii 4 itd. Zostaną wykonaneinstrukcje2orazinstrukcje3. Teraz już się pewnie domyślasz za co jest odpowiedzialna instrukcjabreakJej zadaniem jest przeniesienie sterowania poza aktualny blok kodu, czyli w naszym przypadku poza}. Zapomnienie obreakw tym przypadku jest poważnym błędem o którym niestety nie zostaniemy poinformowanie podczas wykonywania programu.
we can turn to aswitchstatement to write more concise and readable code.
Note: To a computer, aswitchstatement and anif/elsestatement are the same, but aswitchstatement can be easier for other humans to read. Part of being a good developer is writing code that both computers and other humans can read.
switchstatements look like this:
var
groceryItem
=
'papaya'
;
switch
(
groceryItem
) {
case
'tomato'
:
console
.
log
(
'Tomatoes are $0.49'
);
break
;
case
'lime'
:
console
.
log
(
'Limes are $1.49'
);
break
;
case
'papaya'
:
console
.
log
(
'Papayas are $1.29'
);
break
;
default
:
console
.
log
(
'Invalid item'
);
break
;
}
- The
switchkeyword initiates the statement, and is followed by( ... ), which contains the condition that eachcasewill compare to. In the example, the condition isgroceryItem. - Inside the block,
{ ... }, there arecases.caseis like theelse ifpart of anif/else if/elsestatement. The word following the firstcaseis'tomato'. IfgroceryItemequalled'tomato', that case'sconsole.logwould run. groceryItemequals'papaya', so the first and secondcasestatements are skipped. The thirdcaseruns since thecaseis'papaya'matchesgroceryItem's value. This particular program will log out:'Papayas are $1.29'.- Then the program stops with the
breakkeyword. This keyword will prevent theswitchstatement from executing any more of its code. - At the end of each
switchstatement, there is adefaultcondition. If none of thecases are true, then this code will run.
