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/17-arrow-functions-basics/article.md
+6-6Lines changed: 6 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# Šipkové funkce - základy
1
+
# Šipkové funkce – základy
2
2
3
3
Existuje ještě jedna velice jednoduchá a výstižná syntaxe vytváření funkcí, která často bývá lepší než funkční výrazy.
4
4
@@ -48,7 +48,7 @@ Jak vidíte, `(a, b) => a + b` znamená funkci, která přijímá dva argumenty
48
48
alert( dvojnásobek(3) ); // 6
49
49
```
50
50
51
-
- Nejsou-li žádné argumenty, závorky budou prázdné (ale musejí být uvedeny):
51
+
- Nejsou-li žádné argumenty, závorky budou prázdné, ale musejí být uvedeny:
52
52
53
53
```js run
54
54
let řekniAhoj = () => alert("Ahoj!");
@@ -76,9 +76,9 @@ Jsou velmi vhodné pro jednoduché jednořádkové akce, kdy se nám prostě nec
76
76
77
77
## Víceřádkové šipkové funkce
78
78
79
-
Výše uvedené příklady přebíraly argumenty z levé strany `=>` a vyhodnocovaly s nimi pravou stranu.
79
+
Šipkové funkce, které jsme doposud viděli, byly velmi jednoduché. Přebíraly argumenty z levé strany `=>`, vyhodnotily s nimi výraz na pravé straně a vrátily jeho hodnotu.
80
80
81
-
Někdy potřebujeme něco složitějšího, například více výrazů nebo příkazů za sebou. I to je možné, ale pak je musíme uzavřít do složených závorek. Uvnitř nich potom použijeme běžný příkaz `return`.
81
+
Někdy potřebujeme složitější funkci s více výrazy a příkazy. V takovém případě je můžeme uzavřít do složených závorek. Hlavní rozdíl je v tom, že složené závorky vyžadují uvnitř `return`, aby mohly vrátit hodnotu (stejně jako běžná funkce).
82
82
83
83
Například takto:
84
84
@@ -105,7 +105,7 @@ Prozatím už můžeme používat šipkové funkce pro jednořádkové akce a ca
105
105
106
106
## Shrnutí
107
107
108
-
Šipkové funkce se hodí pro jednořádkové funkce. Dají se napsat dvěma způsoby:
108
+
Šipkové funkce se hodí pro jednoduché akce, zvláště pro jednořádkové funkce. Dají se napsat dvěma způsoby:
109
109
110
-
1. Bez složených závorek:`(...args) => výraz`-- na pravé straně je výraz: funkce jej vyhodnotí a vrátí jeho výsledek.
110
+
1. Bez složených závorek:`(...args) => výraz`-- na pravé straně je výraz: funkce jej vyhodnotí a vrátí jeho výsledek.Závorky můžeme vynechat, má-li funkce pouze jeden argument, např. `n => n*2`.
111
111
2. Se složenými závorkami:`(...args) => { tělo }`-- složené závorky nám umožňují uvést ve funkci více příkazů, ale aby funkce něco vrátila, musíme výslovně uvést `return`.
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/01-debugging-chrome/article.md
+11-12Lines changed: 11 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -38,7 +38,7 @@ Pokud stiskneme `key:Esc`, otevře se dole konzole. Můžeme tam psát příkazy
38
38
39
39
Poté, co se příkaz vykoná, se dole zobrazí jeho výsledek.
40
40
41
-
Například `1+2` zde vydá výsledek `3` a`ahoj("debugger")` nevrátí nic, takže výsledek bude `undefined`:
41
+
Například `1+2` zde vydá výsledek `3`, zatímco volání funkce`ahoj("debugger")` nevrátí nic, takže výsledek bude `undefined`:
42
42
43
43

44
44
@@ -63,12 +63,12 @@ V pravém panelu vždy najdeme seznam breakpointů. Ten je užitečný, když m
63
63
- ...A tak dále.
64
64
65
65
```smart header="Podmíněné breakpointy"
66
-
*Kliknutím pravým tlačítkem* na číslo řádku můžeme vytvořit *podmíněný* breakpoint. Ten se aktivuje, jen když je splněna zadaná podmínka.
66
+
*Kliknutím pravým tlačítkem* na číslo řádku můžeme vytvořit *podmíněný* breakpoint. Ten se aktivuje, jen když je zadaný výraz, který byste měli uvést při vytvoření breakpointu, pravdivý.
67
67
68
68
To se hodí, když potřebujeme zastavit skript jen při určité hodnotě proměnné nebo pro určité parametry funkce.
69
69
```
70
70
71
-
## Příkaz debugger
71
+
## Příkaz „debugger“
72
72
73
73
Pozastavit kód můžeme také tím, že v něm použijeme příkaz `debugger`, například:
74
74
@@ -84,8 +84,7 @@ function ahoj(jméno) {
84
84
}
85
85
```
86
86
87
-
To je velmi užitečné, když se nacházíme v editoru kódu a nechceme se přepínat do prohlížeče a hledat skript ve vývojářských nástrojích, abychom nastavili breakpoint.
88
-
87
+
Tento příkaz funguje jen tehdy, když jsou otevřené vývojářské nástroje, jinak jej prohlížeč ignoruje.
@@ -137,11 +136,11 @@ K tomu slouží tlačítka na vrchu pravého panelu. Podívejme se na ně.
137
136
Dalším a dalším klikáním můžeme procházet všechny příkazy skriptu jeden po druhém.
138
137
139
138
<spanclass="devtools"style="background-position:-62px-192px"></span> -- "Step over": vykoná další příkaz, ale *nevstoupí do funkce*, klávesa `key:F10`.
140
-
: Podobá se předchozímu příkazu „Step“, ale chová se jinak, jestliže dalším příkazem je volání funkce. Ne však vestavěné funkce jako `alert`, ale námi nadefinované funkce.
141
-
142
-
Příkaz „Step“ do ní vstoupí a pozastaví provádění na jejím prvním řádku, zatímco „Step over“ neviditelně zavolá funkci a přeskočí její vnitřek.
139
+
: Podobá se předchozímu příkazu „Step“, ale chová se jinak, jestliže dalším příkazem je volání funkce (ne však vestavěné funkce jako `alert`, ale námi nadefinované funkce).
143
140
144
-
Provádění se pak ihned po této funkci pozastaví.
141
+
Když si je srovnáme, příkaz „Step“ do ní vstoupí a pozastaví provádění na jejím prvním řádku, zatímco „Step over“ provede vnořené volání funkce pro nás neviditelně a přeskočí její vnitřek.
142
+
143
+
Provádění se pak ihned po volání této funkce pozastaví.
145
144
146
145
To se hodí, když nás nezajímá, co se děje uvnitř volané funkce.
147
146
@@ -157,7 +156,7 @@ K tomu slouží tlačítka na vrchu pravého panelu. Podívejme se na ně.
157
156
: Toto tlačítko nemá vliv na provádění, jen hromadně zapne/vypne všechny breakpointy.
158
157
159
158
<spanclass="devtools"style="background-position:-90px-146px"></span> -- povolí/zakáže automatické pozastavení v případě chyby.
160
-
: Když je povoleno a vývojářské nástroje jsou otevřeny, chyba ve skriptu způsobí automatické pozastavení jeho výkonu. Pak můžeme analyzovat jeho proměnné, abychom viděli, co je špatně. Když tedy náš skript skončí s chybou, můžeme otevřít debugger, povolit tuto možnost a znovu načíst stránku, abychom viděli, kde spadl a jaký je v tom okamžiku jeho kontext.
159
+
: Když je povoleno a vývojářské nástroje jsou otevřeny, chyba během výkonu skriptu jej automaticky pozastaví. Pak můžeme v debuggeru analyzovat proměnné, abychom viděli, co je špatně. Když tedy náš skript skončí s chybou, můžeme otevřít debugger, povolit tuto možnost a znovu načíst stránku, abychom viděli, kde spadl a jaký je v tom okamžiku jeho kontext.
161
160
162
161
```smart header="Pokračovat až sem"
163
162
Po kliknutí pravým tlačítkem myši na řádek kódu se otevře kontextové menu s výtečnou možností „Pokračovat až sem“ („Continue to here“).
@@ -189,7 +188,7 @@ Jak vidíme, existují tři hlavní způsoby, jak pozastavit skript:
189
188
2. Příkazy `debugger`.
190
189
3. Chyba (jsou-li vývojářské nástroje otevřené a tlačítko <spanclass="devtools"style="background-position:-90px-146px"></span> je „zapnuté“).
191
190
192
-
Když je kód pozastaven, můžeme jej ladit - prozkoumávat proměnné a trasovat kód, abychom viděli, kde se při jeho vykonávání něco pokazilo.
191
+
Když je kód pozastaven, můžeme jej ladit: prozkoumávat proměnné a trasovat kód, abychom viděli, kde se při jeho vykonávání něco pokazilo.
193
192
194
193
Vývojářské nástroje obsahují mnohem více možností, než jsme zde uvedli. Kompletní manuál najdete na <https://developers.google.com/web/tools/chrome-devtools>.
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/07-optional-chaining/article.md
+24-12Lines changed: 24 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,3 @@
1
-
2
1
# Volitelné zřetězení „?.“
3
2
4
3
[recent browser="new"]
@@ -32,7 +31,7 @@ V mnoha praktických případech bychom však zde raději získali `undefined` m
32
31
let html =document.querySelector('.elem').innerHTML; // chyba, pokud je to null
33
32
```
34
33
35
-
Opět platí, že pokud tento prvek neexistuje, při přístupu k `.innerHTML` z `null` dostaneme chybu. Ale v některých případech, kdy je nepřítomnost prvku normální, bychom se této chybě rádi vyhnuli a prostě přijali za výsledek `html = null`.
34
+
Opět platí, že pokud tento prvek neexistuje, při přístupu k vlastnosti `.innerHTML` z `null` dostaneme chybu. Ale v některých případech, kdy je nepřítomnost prvku normální, bychom se této chybě rádi vyhnuli a prostě přijali za výsledek `html = null`.
Funguje to, nenastala žádná chyba... Ale není to příliš elegantní. Jak vidíme, `"uživatel.adresa"` se v kódu objevuje dvakrát. U hlouběji vnořených vlastností to bude problém, protože bude vyžadováno více opakování.
46
+
Funguje to, nenastala žádná chyba... Ale není to příliš elegantní. Jak vidíme, `„uživatel.adresa“` se v kódu objevuje dvakrát.
48
47
49
-
Např. zkusme získat `uživatel.adresa.ulice.název`.
48
+
Takto by vypadalo totéž pro `document.querySelector`:
50
49
51
-
Musíme zkontrolovat jak `uživatel.adresa`, tak `uživatel.adresa.ulice`:
50
+
```js run
51
+
let html =document.querySelector('.elem') ?document.querySelector('.elem').innerHTML:null;
52
+
```
53
+
54
+
Vidíme, že hledání prvku `document.querySelector('.elem')` se zde ve skutečnosti volá dvakrát. To není dobré.
55
+
56
+
Pro hlouběji vnořené vlastnosti to bude ještě ošklivější, protože bude vyžadováno více opakování.
57
+
58
+
Například zkusme podobným způsobem získat `uživatel.adresa.ulice.název`.
let html =document.querySelector('.elem')?.innerHTML; // není-li žádný prvek, bude null
106
+
```
107
+
108
+
95
109
Načtení adresy pomocí `uživatel?.adresa` funguje i tehdy, když objekt `uživatel` neexistuje:
96
110
97
111
```js run
@@ -162,11 +176,11 @@ uživatelAdmin.admin?.(); // Jsem admin
162
176
*/!*
163
177
164
178
*!*
165
-
uživatelHost.admin?.(); // nic (taková metoda není)
179
+
uživatelHost.admin?.(); // nic se nestane (taková metoda není)
166
180
*/!*
167
181
```
168
182
169
-
Zde na obou řádcích nejprve použijeme tečku (`uživatelAdmin.admin`) k získání vlastnosti `admin`, protože předpokládáme, že objekt uživatele existuje, takže je bezpečné z něj číst.
183
+
Zde na obou řádcích nejprve použijeme tečku (`uživatelAdmin.admin`) k získání vlastnosti `admin`, protože předpokládáme, že objekt `uživatel` existuje, takže je bezpečné z něj číst.
170
184
171
185
Pak `?.()` prověří levou stranu: jestliže funkce `admin` existuje, pak se spustí (tak tomu je pro `uživatelAdmin`). Jinak (pro `uživatelHost`) se vyhodnocování zastaví bez chyb.
172
186
@@ -199,10 +213,8 @@ Například:
199
213
let uživatel = null;
200
214
201
215
uživatel?.jméno = "Jan"; // Chyba, nefunguje to
202
-
// protože se to vyhodnotí jako undefined = "Jan"
216
+
// protože se to vyhodnotí jako: undefined = "Jan"
203
217
```
204
-
205
-
Tak elegantní to zase není.
206
218
````
207
219
208
220
## Shrnutí
@@ -217,4 +229,4 @@ Jak vidíme, všechny jsou srozumitelné a snadno se používají. `?.` ověří
217
229
218
230
Řetězec více `?.` nám umožňuje bezpečný přístup k vnořeným vlastnostem.
219
231
220
-
Přesto bychom měli používat `?.` opatrně a jen tehdy, když je přijatelné, aby levá strana skutečně neexistovala. Tak se před námi neukryjí programátorské chyby, jestliže k nim dojde.
232
+
Přesto bychom měli používat `?.` opatrně a jen tehdy, když je podle logiky našeho kódu přijatelné, aby levá strana skutečně neexistovala. Tak se před námi neukryjí programátorské chyby, jestliže k nim dojde.
0 commit comments