|
1 |
| -# Type Conversions |
| 1 | +# Typová konverze |
2 | 2 |
|
3 |
| -Most of the time, operators and functions automatically convert the values given to them to the right type. |
| 3 | +Operátory a funkce většinou automaticky převedou hodnoty, které jim byly zadány, na správný typ. |
4 | 4 |
|
5 |
| -For example, `alert` automatically converts any value to a string to show it. Mathematical operations convert values to numbers. |
| 5 | +Například `alert` automaticky převede libovolnou hodnotu na řetězec a ten zobrazí. Matematické operace převádějí hodnoty na čísla. |
6 | 6 |
|
7 |
| -There are also cases when we need to explicitly convert a value to the expected type. |
| 7 | +Existují však případy, v nichž musíme konverzi hodnoty na potřebný typ explicitně uvést. |
8 | 8 |
|
9 |
| -```smart header="Not talking about objects yet" |
10 |
| -In this chapter, we won't cover objects. For now, we'll just be talking about primitives. |
| 9 | +```smart header="Zatím nehovoříme o objektech" |
| 10 | +V této kapitole se ještě nebudeme zabývat objekty. Prozatím budeme hovořit jen o primitivních typech. |
11 | 11 |
|
12 |
| -Later, after we learn about objects, in the chapter <info:object-toprimitive> we'll see how objects fit in. |
| 12 | +Až se později dozvíme něco o objektech, v kapitole <info:object-toprimitive> uvidíme, jak do toho zapadají. |
13 | 13 | ```
|
14 | 14 |
|
15 |
| -## String Conversion |
| 15 | +## Konverze na řetězec |
16 | 16 |
|
17 |
| -String conversion happens when we need the string form of a value. |
| 17 | +Konverze na řetězec se odehraje tehdy, když potřebujeme hodnotu ve formě řetězce. |
18 | 18 |
|
19 |
| -For example, `alert(value)` does it to show the value. |
| 19 | +Provádí ji například `alert(hodnota)`, aby mohla zobrazit hodnotu. |
20 | 20 |
|
21 |
| -We can also call the `String(value)` function to convert a value to a string: |
| 21 | +Můžeme také volat funkci `String(hodnota)`, která převede zadanou hodnotu na řetězec: |
22 | 22 |
|
23 | 23 | ```js run
|
24 |
| -let value = true; |
25 |
| -alert(typeof value); // boolean |
| 24 | +let hodnota = true; |
| 25 | +alert(typeof hodnota); // boolean |
26 | 26 |
|
27 | 27 | *!*
|
28 |
| -value = String(value); // now value is a string "true" |
29 |
| -alert(typeof value); // string |
| 28 | +hodnota = String(hodnota); // hodnota je nyní řetězec "true" |
| 29 | +alert(typeof hodnota); // string (řetězec) |
30 | 30 | */!*
|
31 | 31 | ```
|
32 | 32 |
|
33 |
| -String conversion is mostly obvious. A `false` becomes `"false"`, `null` becomes `"null"`, etc. |
| 33 | +Konverze na řetězec je většinou zřejmá: `false` se převede na `"false"`, `null` se převede na `"null"`, atd. |
34 | 34 |
|
35 |
| -## Numeric Conversion |
| 35 | +## Konverze na číslo |
36 | 36 |
|
37 |
| -Numeric conversion happens in mathematical functions and expressions automatically. |
| 37 | +Konverze na číslo se automaticky odehrává v matematických funkcích a výrazech. |
38 | 38 |
|
39 |
| -For example, when division `/` is applied to non-numbers: |
| 39 | +Například když použijeme dělení `/` na něco jiného než čísla: |
40 | 40 |
|
41 | 41 | ```js run
|
42 |
| -alert( "6" / "2" ); // 3, strings are converted to numbers |
| 42 | +alert( "6" / "2" ); // 3, řetězce se konvertují na čísla |
43 | 43 | ```
|
44 | 44 |
|
45 |
| -We can use the `Number(value)` function to explicitly convert a `value` to a number: |
| 45 | +Pro explicitní konverzi hodnoty `hodnota` na číslo můžeme použít funkci `Number(hodnota)`: |
46 | 46 |
|
47 | 47 | ```js run
|
48 |
| -let str = "123"; |
49 |
| -alert(typeof str); // string |
| 48 | +let řtzc = "123"; |
| 49 | +alert(typeof řtzc); // string (řetězec) |
50 | 50 |
|
51 |
| -let num = Number(str); // becomes a number 123 |
| 51 | +let čslo = Number(řtzc); // stane se z něj číslo 123 |
52 | 52 |
|
53 |
| -alert(typeof num); // number |
| 53 | +alert(typeof čslo); // number (číslo) |
54 | 54 | ```
|
55 | 55 |
|
56 |
| -Explicit conversion is usually required when we read a value from a string-based source like a text form but expect a number to be entered. |
| 56 | +Explicitní konverze je obvykle potřebná, když načítáme hodnotu z řetězcového zdroje, například z textového formuláře, ale očekáváme zadání čísla. |
57 | 57 |
|
58 |
| -If the string is not a valid number, the result of such a conversion is `NaN`. For instance: |
| 58 | +Není-li v řetězci platné číslo, výsledkem konverze bude `NaN`. Například: |
59 | 59 |
|
60 | 60 | ```js run
|
61 |
| -let age = Number("an arbitrary string instead of a number"); |
| 61 | +let věk = Number("nějaký řetězec místo čísla"); |
62 | 62 |
|
63 |
| -alert(age); // NaN, conversion failed |
| 63 | +alert(věk); // NaN, konverze neuspěla |
64 | 64 | ```
|
65 | 65 |
|
66 |
| -Numeric conversion rules: |
| 66 | +Pravidla pro konverzi na číslo: |
67 | 67 |
|
68 |
| -| Value | Becomes... | |
69 |
| -|-------|-------------| |
| 68 | +| Hodnota | Převede se na... | |
| 69 | +|---------|-------------------| |
70 | 70 | |`undefined`|`NaN`|
|
71 | 71 | |`null`|`0`|
|
72 |
| -|<code>true and false</code> | `1` and `0` | |
73 |
| -| `string` | Whitespaces from the start and end are removed. If the remaining string is empty, the result is `0`. Otherwise, the number is "read" from the string. An error gives `NaN`. | |
| 72 | +|<code>true</code> a <code>false</code> | `1` a `0` | |
| 73 | +| `řetězec` | Odstraní se bílé znaky (mezery, tabulátory, konce řádku) ze začátku a konce. Je-li výsledný řetězec prázdný, výsledkem je `0`. Jinak se číslo „přečte“ z řetězce. Při chybě je vydáno `NaN`. | |
74 | 74 |
|
75 |
| -Examples: |
| 75 | +Příklady: |
76 | 76 |
|
77 | 77 | ```js run
|
78 | 78 | alert( Number(" 123 ") ); // 123
|
79 |
| -alert( Number("123z") ); // NaN (error reading a number at "z") |
| 79 | +alert( Number("123z") ); // NaN (chyba při čtení čísla u znaku "z") |
80 | 80 | alert( Number(true) ); // 1
|
81 | 81 | alert( Number(false) ); // 0
|
82 | 82 | ```
|
83 | 83 |
|
84 |
| -Please note that `null` and `undefined` behave differently here: `null` becomes zero while `undefined` becomes `NaN`. |
| 84 | +Všimněte si, že `null` a `undefined` se tady chovají rozdílně: `null` se převede na nulu, zatímco `undefined` se převede na `NaN`. |
85 | 85 |
|
86 |
| -Most mathematical operators also perform such conversion, we'll see that in the next chapter. |
| 86 | +Tuto konverzi provádí i většina matematických operátorů. Uvidíme to v následující kapitole. |
87 | 87 |
|
88 |
| -## Boolean Conversion |
| 88 | +## Konverze na boolean |
89 | 89 |
|
90 |
| -Boolean conversion is the simplest one. |
| 90 | +Konverze na boolean je nejjednodušší. |
91 | 91 |
|
92 |
| -It happens in logical operations (later we'll meet condition tests and other similar things) but can also be performed explicitly with a call to `Boolean(value)`. |
| 92 | +Odehrává se v logických operátorech (později se setkáme s testy platnosti podmínky a podobnými věcmi), ale můžeme ji provést i explicitně voláním `Boolean(value)`. |
93 | 93 |
|
94 |
| -The conversion rule: |
| 94 | +Pravidla konverze: |
95 | 95 |
|
96 |
| -- Values that are intuitively "empty", like `0`, an empty string, `null`, `undefined`, and `NaN`, become `false`. |
97 |
| -- Other values become `true`. |
| 96 | +- Hodnoty, které jsou intuitivně „prázdné“, tj. `0`, prázdný řetězec, `null`, `undefined` a `NaN`, se převedou na `false`. |
| 97 | +- Ostatní hodnoty se převedou na `true`. |
98 | 98 |
|
99 |
| -For instance: |
| 99 | +Příklad: |
100 | 100 |
|
101 | 101 | ```js run
|
102 | 102 | alert( Boolean(1) ); // true
|
103 | 103 | alert( Boolean(0) ); // false
|
104 | 104 |
|
105 |
| -alert( Boolean("hello") ); // true |
| 105 | +alert( Boolean("ahoj") ); // true |
106 | 106 | alert( Boolean("") ); // false
|
107 | 107 | ```
|
108 | 108 |
|
109 |
| -````warn header="Please note: the string with zero `\"0\"` is `true`" |
110 |
| -Some languages (namely PHP) treat `"0"` as `false`. But in JavaScript, a non-empty string is always `true`. |
| 109 | +````warn header="Všimněte si: řetězec s nulou `\"0\"` se převede na `true`" |
| 110 | +Některé jazyky (konkrétně PHP) zacházejí s řetězcem `"0"` jako s `false`, avšak v JavaScriptu je neprázdný řetězec vždy `true`. |
111 | 111 |
|
112 | 112 | ```js run
|
113 | 113 | alert( Boolean("0") ); // true
|
114 |
| -alert( Boolean(" ") ); // spaces, also true (any non-empty string is true) |
| 114 | +alert( Boolean(" ") ); // mezery, také true (každý neprázdný řetězec je true) |
115 | 115 | ```
|
116 | 116 | ````
|
117 | 117 |
|
118 |
| -## Summary |
| 118 | +## Shrnutí |
119 | 119 |
|
120 |
| -The three most widely used type conversions are to string, to number, and to boolean. |
| 120 | +Tři nejčastěji používané typové konverze jsou na řetězec, na číslo a na boolean. |
121 | 121 |
|
122 |
| -**`String Conversion`** -- Occurs when we output something. Can be performed with `String(value)`. The conversion to string is usually obvious for primitive values. |
| 122 | +**`Konverze na řetězec`** -- Nastává, když něco vypisujeme. Můžeme ji provést pomocí `String(hodnota)`. Konverze na řetězec je u primitivních typů obvykle zřejmá. |
123 | 123 |
|
124 |
| -**`Numeric Conversion`** -- Occurs in math operations. Can be performed with `Number(value)`. |
| 124 | +**`Konverze na číslo`** -- Nastává při matematických operacích. Můžeme ji provést pomocí `Number(hodnota)`. |
125 | 125 |
|
126 |
| -The conversion follows the rules: |
| 126 | +Konverze se řídí těmito pravidly: |
127 | 127 |
|
128 |
| -| Value | Becomes... | |
129 |
| -|-------|-------------| |
| 128 | +| Hodnota | Převede se na... | |
| 129 | +|---------|-------------------| |
130 | 130 | |`undefined`|`NaN`|
|
131 | 131 | |`null`|`0`|
|
132 | 132 | |<code>true / false</code> | `1 / 0` |
|
133 |
| -| `string` | The string is read "as is", whitespaces from both sides are ignored. An empty string becomes `0`. An error gives `NaN`. | |
| 133 | +| `řetězec` | Načte se „doslovně“, bílé znaky na obou stranách se ignorují. Z prázdného řetězce se stane `0`. Při chybě je vydáno `NaN`. | |
134 | 134 |
|
135 |
| -**`Boolean Conversion`** -- Occurs in logical operations. Can be performed with `Boolean(value)`. |
| 135 | +**`Konverze na boolean`** -- Nastává při logických operacích. Můžeme ji provést pomocí `Boolean(hodnota)`. |
136 | 136 |
|
137 |
| -Follows the rules: |
| 137 | +Řídí se těmito pravidly: |
138 | 138 |
|
139 |
| -| Value | Becomes... | |
140 |
| -|-------|-------------| |
| 139 | +| Hodnota | Převede se na... | |
| 140 | +|---------|-------------------| |
141 | 141 | |`0`, `null`, `undefined`, `NaN`, `""` |`false`|
|
142 |
| -|any other value| `true` | |
| 142 | +|jakákoli jiná hodnota| `true` | |
143 | 143 |
|
| 144 | +Většinu těchto pravidel je snadné pochopit a zapamatovat si. Významné výjimky, v nichž lidé obvykle chybují, jsou: |
144 | 145 |
|
145 |
| -Most of these rules are easy to understand and memorize. The notable exceptions where people usually make mistakes are: |
| 146 | +- `undefined` převedené na číslo je `NaN`, ne `0`. |
| 147 | +- `"0"` a řetězce obsahující jen mezery, např. `" "`, jsou po převodu na boolean vyhodnoceny jako true. |
146 | 148 |
|
147 |
| -- `undefined` is `NaN` as a number, not `0`. |
148 |
| -- `"0"` and space-only strings like `" "` are true as a boolean. |
149 |
| -
|
150 |
| -Objects aren't covered here. We'll return to them later in the chapter <info:object-toprimitive> that is devoted exclusively to objects after we learn more basic things about JavaScript. |
| 149 | +O objektech se zde nezmiňujeme. Později, až se v JavaScriptu naučíme všechny potřebné základy, se k nim vrátíme v kapitole <info:object-toprimitive>, která je věnována výlučně objektům. |
0 commit comments