Instrukcja switch
Instrukcja switch ma bardzo podobne zastosowanie do konstrukcji if else if. Wygląda ona następująco:
Jeśliwyrażenie
jest równe n1 zostaną wykonane instrukcje 1 .W przeciwnym wypadkuwyrażenie
zostanie 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ównen1
to sterowanie programu zostanie przeniesione do linii 3 i zostaną wykonaneinstrukcje1
. Instrukcjaswitch
nie zrobi nic więcej, ona tylko przeniesie sterowanie do odpowiedniej linii. Po wykonaniu linii 3 program przejdzie do linii 4 itd. Zostaną wykonaneinstrukcje2
orazinstrukcje3
. Teraz już się pewnie domyślasz za co jest odpowiedzialna instrukcjabreak
Jej zadaniem jest przeniesienie sterowania poza aktualny blok kodu, czyli w naszym przypadku poza}
. Zapomnienie obreak
w tym przypadku jest poważnym błędem o którym niestety nie zostaniemy poinformowanie podczas wykonywania programu.
Instrukcjabreak
znajduje 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ównen1
to sterowanie programu zostanie przeniesione do linii 3 i zostaną wykonaneinstrukcje1
. Instrukcjaswitch
nie zrobi nic więcej, ona tylko przeniesie sterowanie do odpowiedniej linii. Po wykonaniu linii 3 program przejdzie do linii 4 itd. Zostaną wykonaneinstrukcje2
orazinstrukcje3
. Teraz już się pewnie domyślasz za co jest odpowiedzialna instrukcjabreak
Jej zadaniem jest przeniesienie sterowania poza aktualny blok kodu, czyli w naszym przypadku poza}
. Zapomnienie obreak
w tym przypadku jest poważnym błędem o którym niestety nie zostaniemy poinformowanie podczas wykonywania programu.
we can turn to aswitch
statement to write more concise and readable code.
Note: To a computer, aswitch
statement and anif
/else
statement are the same, but aswitch
statement 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.
switch
statements 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
switch
keyword initiates the statement, and is followed by( ... )
, which contains the condition that eachcase
will compare to. In the example, the condition isgroceryItem
. - Inside the block,
{ ... }
, there arecase
s.case
is like theelse if
part of anif
/else if
/else
statement. The word following the firstcase
is'tomato'
. IfgroceryItem
equalled'tomato'
, that case'sconsole.log
would run. groceryItem
equals'papaya'
, so the first and secondcase
statements are skipped. The thirdcase
runs since thecase
is'papaya'
matchesgroceryItem
's value. This particular program will log out:'Papayas are $1.29'
.- Then the program stops with the
break
keyword. This keyword will prevent theswitch
statement from executing any more of its code. - At the end of each
switch
statement, there is adefault
condition. If none of thecase
s are true, then this code will run.