You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/14-switch/2-rewrite-if-switch/solution.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff 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:
2
2
3
3
```js run
4
4
let a =+prompt('a?', '');
@@ -21,6 +21,6 @@ switch (a) {
21
21
}
22
22
```
23
23
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í.
25
25
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.
A`switch`statement can replace multiple `if` checks.
3
+
Příkaz`switch`dokáže nahradit několik podmíněných příkazů `if`.
4
4
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.
6
6
7
-
## The syntax
7
+
## Syntaxe
8
8
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`.
10
10
11
-
It looks like this:
11
+
Vypadá to takto:
12
12
13
13
```js no-beautify
14
14
switch(x) {
15
-
case'value1': // if (x === 'value1')
15
+
case'hodnota1': // if (x === 'hodnota1')
16
16
...
17
17
[break]
18
18
19
-
case'value2': // if (x === 'value2')
19
+
case'hodnota2': // if (x === 'hodnota2')
20
20
...
21
21
[break]
22
22
@@ -26,71 +26,71 @@ switch(x) {
26
26
}
27
27
```
28
28
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).
32
32
33
-
## An example
33
+
## Příklad
34
34
35
-
An example of `switch` (the executed code is highlighted):
35
+
Příklad příkazu `switch` (vykonaný kód je zvýrazněn):
36
36
37
37
```js run
38
38
let a =2+2;
39
39
40
40
switch (a) {
41
41
case3:
42
-
alert( 'Too small' );
42
+
alert( 'Příliš málo' );
43
43
break;
44
44
*!*
45
45
case4:
46
-
alert( 'Exactly!' );
46
+
alert( 'Přesně!' );
47
47
break;
48
48
*/!*
49
49
case5:
50
-
alert( 'Too big' );
50
+
alert( 'Příliš mnoho' );
51
51
break;
52
52
default:
53
-
alert( "I don't know such values" );
53
+
alert( "Takové hodnoty neznám" );
54
54
}
55
55
```
56
56
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.
58
58
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`.
60
60
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í.**
62
62
63
-
An example without`break`:
63
+
Příklad bez`break`:
64
64
65
65
```js run
66
66
let a =2+2;
67
67
68
68
switch (a) {
69
69
case3:
70
-
alert( 'Too small' );
70
+
alert( 'Příliš málo' );
71
71
*!*
72
72
case4:
73
-
alert( 'Exactly!' );
73
+
alert( 'Přesně!' );
74
74
case5:
75
-
alert( 'Too big' );
75
+
alert( 'Příliš mnoho' );
76
76
default:
77
-
alert( "I don't know such values" );
77
+
alert( "Takové hodnoty neznám" );
78
78
*/!*
79
79
}
80
80
```
81
81
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`ů:
83
83
84
84
```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" );
88
88
```
89
89
90
-
````smart header="Any expression can be a `switch/case`argument"
````smart header="Argumentem `switch/case`může být jakýkoli výraz"
91
+
Jak`switch`, tak`case`dovolují libovolné výrazy.
92
92
93
-
For example:
93
+
Příklad:
94
94
95
95
```js run
96
96
let a ="1";
@@ -99,74 +99,74 @@ let b = 0;
99
99
switch (+a) {
100
100
*!*
101
101
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");
103
103
break;
104
104
*/!*
105
105
106
106
default:
107
-
alert("this doesn't run");
107
+
alert("toto se nevykoná");
108
108
}
109
109
```
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.
111
111
````
112
112
113
-
## Grouping of "case"
113
+
## Seskupování „case“
114
114
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.
116
116
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`:
118
118
119
119
```js run no-beautify
120
120
let a = 3;
121
121
122
122
switch (a) {
123
123
case 4:
124
-
alert('Right!');
124
+
alert('Správně!');
125
125
break;
126
126
127
127
*!*
128
-
case 3: // (*) grouped two cases
128
+
case 3: // (*) dvě seskupené varianty
129
129
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?");
132
132
break;
133
133
*/!*
134
134
135
135
default:
136
-
alert('The result is strange. Really.');
136
+
alert('Tento výsledek je divný. Opravdu.');
137
137
}
138
138
```
139
139
140
-
Now both `3` and `5` show the same message.
140
+
Nyní `3` a `5` zobrazí stejnou zprávu.
141
141
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`.
143
143
144
-
## Type matters
144
+
## Na datovém typu záleží
145
145
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.
147
147
148
-
For example, let's consider the code:
148
+
Jako příklad poslouží tento kód:
149
149
150
150
```js run
151
-
let arg = prompt("Enter a value?");
151
+
let arg = prompt("Zadejte hodnotu");
152
152
switch (arg) {
153
153
case '0':
154
154
case '1':
155
-
alert( 'One or zero' );
155
+
alert( 'Jedna nebo nula' );
156
156
break;
157
157
158
158
case '2':
159
-
alert( 'Two' );
159
+
alert( 'Dvě' );
160
160
break;
161
161
162
162
case 3:
163
-
alert( 'Never executes!' );
163
+
alert( 'Toto se nikdy nevykoná!' );
164
164
break;
165
165
default:
166
-
alert( 'An unknown value' );
166
+
alert( 'Neznámá hodnota' );
167
167
}
168
168
```
169
169
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