Skip to content

Commit 3891276

Browse files
authored
Merge pull request #80 from otmon76/1.2.14
The "switch" statement
2 parents 5c44dae + 8ee22f1 commit 3891276

File tree

5 files changed

+79
-79
lines changed

5 files changed

+79
-79
lines changed
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
To precisely match the functionality of `switch`, the `if` must use a strict comparison `'==='`.
1+
Abychom dosáhli přesné funkcionality příkazu `switch`, musí `if` používat striktní rovnost `'==='`.
22

3-
For given strings though, a simple `'=='` works too.
3+
V tomto případě však pro zadané řetězce funguje i obyčejné `'=='`.
44

55
```js no-beautify
6-
if(browser == 'Edge') {
7-
alert("You've got the Edge!");
8-
} else if (browser == 'Chrome'
9-
|| browser == 'Firefox'
10-
|| browser == 'Safari'
11-
|| browser == 'Opera') {
12-
alert( 'Okay we support these browsers too' );
6+
if(prohlížeč == 'Edge') {
7+
alert("Vy máte Edge!");
8+
} else if (prohlížeč == 'Chrome'
9+
|| prohlížeč == 'Firefox'
10+
|| prohlížeč == 'Safari'
11+
|| prohlížeč == 'Opera') {
12+
alert( 'V pořádku, tyto prohlížeče také podporujeme' );
1313
} else {
14-
alert( 'We hope that this page looks ok!' );
14+
alert( 'Doufáme, že tato stránka vypadá dobře!' );
1515
}
1616
```
1717

18-
Please note: the construct `browser == 'Chrome' || browser == 'Firefox' …` is split into multiple lines for better readability.
18+
Všimněte si, že konstrukce `prohlížeč == 'Chrome' || prohlížeč == 'Firefox' …` je pro lepší čitelnost rozdělena do několika řádků.
1919

20-
But the `switch` construct is still cleaner and more descriptive.
20+
Ale i přesto je `switch` jasnější a přehlednější.

1-js/02-first-steps/14-switch/1-rewrite-switch-if-else/task.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,25 @@ importance: 5
22

33
---
44

5-
# Rewrite the "switch" into an "if"
5+
# Přepište „switch“ na „if“
66

7-
Write the code using `if..else` which would correspond to the following `switch`:
7+
Přepište tento kód pomocí `if..else`, které nahradí následující `switch`:
88

99
```js
10-
switch (browser) {
10+
switch (prohlížeč) {
1111
case 'Edge':
12-
alert( "You've got the Edge!" );
12+
alert( "Vy máte Edge!" );
1313
break;
1414

1515
case 'Chrome':
1616
case 'Firefox':
1717
case 'Safari':
1818
case 'Opera':
19-
alert( 'Okay we support these browsers too' );
19+
alert( 'V pořádku, tyto prohlížeče také podporujeme' );
2020
break;
2121

2222
default:
23-
alert( 'We hope that this page looks ok!' );
23+
alert( 'Doufáme, že tato stránka vypadá dobře!' );
2424
}
2525
```
2626

1-js/02-first-steps/14-switch/2-rewrite-if-switch/solution.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
The first two checks turn into two `case`. The third check is split into two cases:
1+
První dvě podmínky můžeme přepsat do samostatné varianty, třetí musí být ve dvou variantách:
22

33
```js run
44
let a = +prompt('a?', '');
@@ -21,6 +21,6 @@ switch (a) {
2121
}
2222
```
2323

24-
Please note: the `break` at the bottom is not required. But we put it to make the code future-proof.
24+
Všimněte si, že `break` na konci není nezbytný, ale vložili jsme ho tam, aby byl kód zajištěný pro rozšiřování.
2525

26-
In the future, there is a chance that we'd want to add one more `case`, for example `case 4`. And if we forget to add a break before it, at the end of `case 3`, there will be an error. So that's a kind of self-insurance.
26+
Je možné, že v budoucnu budeme chtít přidat další `case`, například `case 4`. Kdybychom před něj na konec `case 3` zapomněli umístit `break`, nastala by chyba. Je to tedy určitý druh pojistky.

1-js/02-first-steps/14-switch/2-rewrite-if-switch/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ importance: 4
22

33
---
44

5-
# Rewrite "if" into "switch"
5+
# Přepište „if“ na „switch
66

7-
Rewrite the code below using a single `switch` statement:
7+
Přepište uvedený kód pomocí jediného příkazu `switch`:
88

99
```js run
1010
let a = +prompt('a?', '');
Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
# The "switch" statement
1+
# Příkaz „switch
22

3-
A `switch` statement can replace multiple `if` checks.
3+
Příkaz `switch` dokáže nahradit několik podmíněných příkazů `if`.
44

5-
It gives a more descriptive way to compare a value with multiple variants.
5+
Poskytuje přehlednější způsob, jak porovnat hodnotu s několika variantami.
66

7-
## The syntax
7+
## Syntaxe
88

9-
The `switch` has one or more `case` blocks and an optional default.
9+
Příkaz `switch` obsahuje jeden nebo více bloků `case` a nepovinný blok `default`.
1010

11-
It looks like this:
11+
Vypadá to takto:
1212

1313
```js no-beautify
1414
switch(x) {
15-
case 'value1': // if (x === 'value1')
15+
case 'hodnota1': // if (x === 'hodnota1')
1616
...
1717
[break]
1818

19-
case 'value2': // if (x === 'value2')
19+
case 'hodnota2': // if (x === 'hodnota2')
2020
...
2121
[break]
2222

@@ -26,71 +26,71 @@ switch(x) {
2626
}
2727
```
2828

29-
- The value of `x` is checked for a strict equality to the value from the first `case` (that is, `value1`) then to the second (`value2`) and so on.
30-
- If the equality is found, `switch` starts to execute the code starting from the corresponding `case`, until the nearest `break` (or until the end of `switch`).
31-
- If no case is matched then the `default` code is executed (if it exists).
29+
- Je ověřena striktní rovnost hodnoty `x` s hodnotou z prvního `case` (tj. `hodnota1`), pak s druhou `hodnota2`, a tak dále.
30+
- Pokud je rovnost nalezena, `switch` začne vykonávat kód od odpovídajícího `case` až do nejbližšího `break` (nebo do konce bloku `switch`).
31+
- Není-li nalezena žádná rovnost, je vykonán kód `default` (pokud je uveden).
3232

33-
## An example
33+
## Příklad
3434

35-
An example of `switch` (the executed code is highlighted):
35+
Příklad příkazu `switch` (vykonaný kód je zvýrazněn):
3636

3737
```js run
3838
let a = 2 + 2;
3939

4040
switch (a) {
4141
case 3:
42-
alert( 'Too small' );
42+
alert( 'Příliš málo' );
4343
break;
4444
*!*
4545
case 4:
46-
alert( 'Exactly!' );
46+
alert( 'Přesně!' );
4747
break;
4848
*/!*
4949
case 5:
50-
alert( 'Too big' );
50+
alert( 'Příliš mnoho' );
5151
break;
5252
default:
53-
alert( "I don't know such values" );
53+
alert( "Takové hodnoty neznám" );
5454
}
5555
```
5656

57-
Here the `switch` starts to compare `a` from the first `case` variant that is `3`. The match fails.
57+
Zde `switch` začne porovnávat `a` od první varianty, kterou je `3`. Porovnání neuspěje.
5858

59-
Then `4`. That's a match, so the execution starts from `case 4` until the nearest `break`.
59+
Pak `4`. Tady je nalezena shoda, takže se začne vykonávat kód obsažený v `case 4` a skončí na nejbližším `break`.
6060

61-
**If there is no `break` then the execution continues with the next `case` without any checks.**
61+
**Není-li přítomen příkaz `break`, spustí se kód v dalších `case` bez jakéhokoliv porovnání.**
6262

63-
An example without `break`:
63+
Příklad bez `break`:
6464

6565
```js run
6666
let a = 2 + 2;
6767

6868
switch (a) {
6969
case 3:
70-
alert( 'Too small' );
70+
alert( 'Příliš málo' );
7171
*!*
7272
case 4:
73-
alert( 'Exactly!' );
73+
alert( 'Přesně!' );
7474
case 5:
75-
alert( 'Too big' );
75+
alert( 'Příliš mnoho' );
7676
default:
77-
alert( "I don't know such values" );
77+
alert( "Takové hodnoty neznám" );
7878
*/!*
7979
}
8080
```
8181

82-
In the example above we'll see sequential execution of three `alert`s:
82+
V uvedeném příkladu vidíme sekvenční vykonání tří `alert`ů:
8383

8484
```js
85-
alert( 'Exactly!' );
86-
alert( 'Too big' );
87-
alert( "I don't know such values" );
85+
alert( 'Přesně!' );
86+
alert( 'Příliš mnoho' );
87+
alert( "Takové hodnoty neznám" );
8888
```
8989

90-
````smart header="Any expression can be a `switch/case` argument"
91-
Both `switch` and `case` allow arbitrary expressions.
90+
````smart header="Argumentem `switch/case` může být jakýkoli výraz"
91+
Jak `switch`, tak `case` dovolují libovolné výrazy.
9292

93-
For example:
93+
Příklad:
9494

9595
```js run
9696
let a = "1";
@@ -99,74 +99,74 @@ let b = 0;
9999
switch (+a) {
100100
*!*
101101
case b + 1:
102-
alert("this runs, because +a is 1, exactly equals b+1");
102+
alert("toto se vykoná, protože +a je 1, což se rovná b+1");
103103
break;
104104
*/!*
105105

106106
default:
107-
alert("this doesn't run");
107+
alert("toto se nevykoná");
108108
}
109109
```
110-
Here `+a` gives `1`, that's compared with `b + 1` in `case`, and the corresponding code is executed.
110+
Zde `+a` dává `1`, to se v `case` porovná s `b + 1` a spustí se příslušný kód.
111111
````
112112
113-
## Grouping of "case"
113+
## Seskupování „case
114114
115-
Several variants of `case` which share the same code can be grouped.
115+
Je možné seskupit několik `case` variant, které mají mít stejný kód.
116116
117-
For example, if we want the same code to run for `case 3` and `case 5`:
117+
Například když chceme, aby se stejný kód spustil pro `case 3` a `case 5`:
118118
119119
```js run no-beautify
120120
let a = 3;
121121
122122
switch (a) {
123123
case 4:
124-
alert('Right!');
124+
alert('Správně!');
125125
break;
126126
127127
*!*
128-
case 3: // (*) grouped two cases
128+
case 3: // (*) dvě seskupené varianty
129129
case 5:
130-
alert('Wrong!');
131-
alert("Why don't you take a math class?");
130+
alert('Špatně!');
131+
alert("Proč nenavštěvujete kurz matematiky?");
132132
break;
133133
*/!*
134134
135135
default:
136-
alert('The result is strange. Really.');
136+
alert('Tento výsledek je divný. Opravdu.');
137137
}
138138
```
139139
140-
Now both `3` and `5` show the same message.
140+
Nyní `3` a `5` zobrazí stejnou zprávu.
141141
142-
The ability to "group" cases is a side effect of how `switch/case` works without `break`. Here the execution of `case 3` starts from the line `(*)` and goes through `case 5`, because there's no `break`.
142+
Schopnost „seskupovat“ varianty je vedlejší efekt toho, jak `switch/case` funguje bez `break`. Zde provádění `case 3` začne od řádku `(*)` a projde přes `case 5`, protože tam není žádný `break`.
143143
144-
## Type matters
144+
## Na datovém typu záleží
145145
146-
Let's emphasize that the equality check is always strict. The values must be of the same type to match.
146+
Zdůrazňujeme, že ověření rovnosti je vždy striktní. Aby se hodnoty rovnaly, musí být stejného typu.
147147
148-
For example, let's consider the code:
148+
Jako příklad poslouží tento kód:
149149
150150
```js run
151-
let arg = prompt("Enter a value?");
151+
let arg = prompt("Zadejte hodnotu");
152152
switch (arg) {
153153
case '0':
154154
case '1':
155-
alert( 'One or zero' );
155+
alert( 'Jedna nebo nula' );
156156
break;
157157
158158
case '2':
159-
alert( 'Two' );
159+
alert( 'Dvě' );
160160
break;
161161
162162
case 3:
163-
alert( 'Never executes!' );
163+
alert( 'Toto se nikdy nevykoná!' );
164164
break;
165165
default:
166-
alert( 'An unknown value' );
166+
alert( 'Neznámá hodnota' );
167167
}
168168
```
169169
170-
1. For `0`, `1`, the first `alert` runs.
171-
2. For `2` the second `alert` runs.
172-
3. But for `3`, the result of the `prompt` is a string `"3"`, which is not strictly equal `===` to the number `3`. So we've got a dead code in `case 3`! The `default` variant will execute.
170+
1. Pro `0` a `1` se spustí první `alert`.
171+
2. Pro `2` se spustí druhý `alert`.
172+
3. Avšak pro `3` je výsledkem příkazu `prompt` řetězec `"3"`, který není striktně roven `===` číslu `3`. Proto jsme pro `case 3` získali mrtvý kód! Spustí se varianta `default`.

0 commit comments

Comments
 (0)