Skip to content

Commit cdbb668

Browse files
authored
Merge pull request #60 from otmon76/master
changes from English version
2 parents 5818b66 + 97beb51 commit cdbb668

File tree

3 files changed

+20
-93
lines changed

3 files changed

+20
-93
lines changed

1-js/04-object-basics/07-optional-chaining/article.md

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
1+
22
# Volitelné zřetězení „?.“
33

44
[recent browser="new"]
@@ -108,22 +108,16 @@ Např. `?.` v `uživatel?.adresa.ulice.name` umožňuje, aby `uživatel` byl bez
108108
```warn header="Nepoužívejte volitelné zřetězení přehnaně často"
109109
Měli bychom používat `?.` jen tehdy, když je v pořádku, že něco neexistuje.
110110

111-
<<<<<<< HEAD
112111
Například pokud podle logiky našeho kódování musí objekt `uživatel` existovat, ale `adresa` je volitelná, pak bychom měli psát `uživatel.adresa?.ulice`, ale ne `uživatel?.adresa?.ulice`.
113112

114-
Pak pokud se v důsledku chyby stane, že `uživatel` bude nedefinovaný, uvidíme programátorskou chybu a opravíme ji. Jinak by se chyby v kódu mohly neohlásit i tehdy, když to není vhodné, a jejich ladění by bylo obtížnější.
115-
=======
116-
For example, if according to our code logic `user` object must exist, but `address` is optional, then we should write `user.address?.street`, but not `user?.address?.street`.
117-
118-
Then, if `user` happens to be undefined, we'll see a programming error about it and fix it. Otherwise, if we overuse `?.`, coding errors can be silenced where not appropriate, and become more difficult to debug.
119-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
113+
Pak pokud se stane, že `uživatel` bude nedefinovaný, ohlásí se programátorská chyba a my ji opravíme. Kdybychom však přehnaně používali `?.`, mohly by se chyby v kódu neohlásit i tehdy, když to není vhodné, a jejich ladění by bylo obtížnější.
120114
```
121115
122116
````warn header="Proměnná před `?.` musí být deklarovaná"
123117
Pokud proměnná `uživatel` vůbec neexistuje, pak `uživatel?.cokoli` ohlásí chybu:
124118
125119
```js run
126-
// ReferenceError: uživatel is not defined
120+
// ReferenceError: uživatel není definován
127121
uživatel?.adresa;
128122
```
129123
Proměnná musí být deklarovaná (tj. `let/const/var uživatel` nebo jako parametr funkce). Volitelné zřetězení funguje jen pro deklarované proměnné.
@@ -133,23 +127,15 @@ Proměnná musí být deklarovaná (tj. `let/const/var uživatel` nebo jako para
133127

134128
Jak bylo řečeno, `?.` okamžitě pozastaví („vyzkratuje“) vyhodnocování, jestliže levá část neexistuje.
135129

136-
<<<<<<< HEAD
137-
Jestliže tedy následují další volání funkcí nebo vedlejší efekty, neprovedou se.
138-
=======
139-
So, if there are any further function calls or operations to the right of `?.`, they won't be made.
140-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
130+
Jestliže tedy za pozastaveným `?.` vpravo následují další volání funkcí nebo operace, nevykonají se.
141131

142132
Například:
143133

144134
```js run
145135
let uživatel = null;
146136
let x = 0;
147137
148-
<<<<<<< HEAD
149-
uživatel?.řekniAhoj(x++); // „řekniAhoj“ se neprovede, takže výkon se nedostane ke x++
150-
=======
151-
user?.sayHi(x++); // no "user", so the execution doesn't reach sayHi call and x++
152-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
138+
uživatel?.řekniAhoj(x++); // „uživatel“ není, takže výkon se nedostane k volání řekniAhoj a x++
153139
154140
alert(x); // 0, hodnota se nezvýšila
155141
```
@@ -193,11 +179,7 @@ let uživatel1 = {
193179
křestníJméno: "Jan"
194180
};
195181
196-
<<<<<<< HEAD
197182
let uživatel2 = null;
198-
=======
199-
let user2 = null;
200-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
201183
202184
alert( uživatel1?.[klíč] ); // Jan
203185
alert( uživatel2?.[klíč] ); // undefined

1-js/05-data-types/02-number/article.md

Lines changed: 7 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,7 @@ Nyní zapišme něco velmi malého. Třeba 1 mikrosekundu (jednu milióntinu sek
4747
let mcs = 0.000001;
4848
```
4949

50-
<<<<<<< HEAD
5150
Stejně jako předtím nám může pomoci použití `"e"`. Jestliže se chceme vyhnout explicitnímu zápisu nul, můžeme zapsat totéž jako:
52-
=======
53-
Just like before, using `"e"` can help. If we'd like to avoid writing the zeroes explicitly, we could write the same as:
54-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
5551

5652
```js
5753
let mcs = 1e-6; // šest nul nalevo od 1
@@ -160,11 +156,8 @@ Existují dva způsoby, jak to udělat:
160156

161157
1. Násobit a dělit.
162158

163-
<<<<<<< HEAD
164-
Abychom například zaokrouhlili číslo na 2. číslici za desetinnou čárkou, můžeme toto číslo vynásobit `100` (nebo vyšší mocninou 10), zavolat zaokrouhlovací funkci a pak je znovu vydělit.
165-
=======
166-
For example, to round the number to the 2nd digit after the decimal, we can multiply the number by `100`, call the rounding function and then divide it back.
167-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
159+
Abychom například zaokrouhlili číslo na 2. číslici za desetinnou čárkou, můžeme toto číslo vynásobit `100`, zavolat zaokrouhlovací funkci a pak je znovu vydělit.
160+
168161
```js run
169162
let číslo = 1.23456;
170163
@@ -192,33 +185,21 @@ Existují dva způsoby, jak to udělat:
192185
alert( číslo.toFixed(5) ); // "12.34000", přidají se nuly, aby číslic bylo přesně 5
193186
```
194187

195-
<<<<<<< HEAD
196-
Můžeme jej převést na číslo pomocí unárního plus nebo volání `Number()`: `+číslo.toFixed(5)`.
197-
=======
198-
We can convert it to a number using the unary plus or a `Number()` call, e.g write `+num.toFixed(5)`.
199-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
188+
Můžeme jej převést na číslo pomocí unárního plus nebo volání `Number()`, např. napsat `+číslo.toFixed(5)`.
200189

201190
## Nepřesné výpočty
202191

203192
Číslo je vnitřně reprezentováno v 64-bitovém formátu [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754-2008_revision), takže se ukládá přesně do 64 bitů: 52 z nich se používá k uložení číslic, v 11 z nich je uložena pozice desetinné čárky (u celých čísel jsou tyto bity nulové) a 1 bit je pro znaménko.
204193

205-
<<<<<<< HEAD
206-
Je-li číslo příliš velké, překročí toto 64-bitové úložiště a stane se z něj nekonečno:
207-
=======
208-
If a number is really huge, it may overflow the 64-bit storage and become a special numeric value `Infinity`:
209-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
194+
Je-li číslo opravdu obrovské, může toto 64-bitové úložiště překročit a stát se speciální číselnou hodnotou `Infinity` (nekonečno):
210195

211196
```js run
212197
alert( 1e500 ); // Infinity (nekonečno)
213198
```
214199

215200
Co může být trochu méně zřejmé, ale stává se poměrně často, je ztráta přesnosti.
216201

217-
<<<<<<< HEAD
218-
Uvažujme tento (nepravdivý!) test:
219-
=======
220-
Consider this (falsy!) equality test:
221-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
202+
Uvažujme tento (nepravdivý!) test rovnosti:
222203

223204
```js run
224205
alert( 0.1 + 0.2 == 0.3 ); // *!*false*/!*
@@ -232,21 +213,13 @@ Zvláštní! Co tedy je, když ne `0.3`?
232213
alert( 0.1 + 0.2 ); // 0.30000000000000004
233214
```
234215

235-
<<<<<<< HEAD
236-
Ouvej! Tohle má větší důsledky než jen zdejší nekorektní porovnání. Představme si, že vytváříme elektronický obchod a návštěvník si do košíku uloží zboží za `$0.10` a za `$0.20`. Celková cena pak bude `$0.30000000000000004`. To každého překvapí.
237-
=======
238-
Ouch! Imagine you're making an e-shopping site and the visitor puts `$0.10` and `$0.20` goods into their cart. The order total will be `$0.30000000000000004`. That would surprise anyone.
239-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
216+
Ouvej! Představme si, že vytváříme elektronický obchod a návštěvník si do košíku uloží zboží za `$0.10` a za `$0.20`. Celková cena pak bude `$0.30000000000000004`. To každého překvapí.
240217

241218
Ale proč se to děje?
242219

243220
Číslo je v paměti uloženo ve své binární podobě, jako posloupnost bitů -- jedniček a nul. Ale desetinná čísla jako `0.1` nebo `0.2`, která v desítkové soustavě vypadají jednoduše, jsou ve své binární podobě ve skutečnosti nekonečná.
244221

245-
<<<<<<< HEAD
246-
Jinými slovy, co je `0.1`? Je to jedna děleno deseti `1/10`, jedna desetina. V desítkové soustavě lze taková čísla snadno reprezentovat. Srovnejme si to s jednou třetinou: `1/3`. Z ní se stane nekonečné desetinné číslo `0.33333(3)`.
247-
=======
248-
What is `0.1`? It is one divided by ten `1/10`, one-tenth. In decimal numeral system such numbers are easily representable. Compare it to one-third: `1/3`. It becomes an endless fraction `0.33333(3)`.
249-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
222+
Co je `0.1`? Je to jedna děleno deseti `1/10`, jedna desetina. V desítkové soustavě lze taková čísla snadno reprezentovat. Srovnejme si to s jednou třetinou: `1/3`. Z ní se stane nekonečné desetinné číslo `0.33333(3)`.
250223

251224
Je tedy zaručeno, že dělení mocninami `10` bude v desítkové soustavě fungovat dobře, ale dělení třemi ne. Ze stejného důvodu je v binární soustavě zaručeno, že bude fungovat dělení mocninami `2`, ale z `1/10` se stane nekonečné binární číslo.
252225

1-js/09-classes/03-static-properties-methods/article.md

Lines changed: 8 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11

22
# Statické vlastnosti a metody
33

4-
<<<<<<< HEAD
5-
Metodu můžeme přiřadit samotné funkci třídy namísto jejímu `„prototype"`. Takové metody se nazývají *statické*.
4+
Metodu můžeme také přiřadit samotné třídě jako celku. Takové metody se nazývají *statické*.
65

7-
Ve třídě jsou předznamenány klíčovým slovem `static`, například:
8-
=======
9-
We can also assign a method to the class as a whole. Such methods are called *static*.
10-
11-
In a class declaration, they are prepended by `static` keyword, like this:
12-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
6+
V deklaraci třídy jsou předznamenány klíčovým slovem `static`, například:
137

148
```js run
159
class Uživatel {
@@ -37,17 +31,11 @@ Uživatel.statickáMetoda(); // true
3731

3832
Hodnota `this` ve volání `Uživatel.statickáMetoda()` je samotný třídní konstruktor `Uživatel` (podle pravidla „objekt před tečkou“).
3933

40-
<<<<<<< HEAD
41-
Statické metody se obvykle používají k implementaci funkcí, které patří třídě, ale žádnému jejímu konkrétnímu objektu.
42-
43-
Například máme objekty třídy `Článek` a potřebujeme funkci, která je bude porovnávat. Přirozené řešení by bylo přidat metodu `Článek.porovnej`, například:
44-
=======
45-
Usually, static methods are used to implement functions that belong to the class as a whole, but not to any particular object of it.
34+
Statické metody se obvykle používají k implementaci funkcí, které patří třídě jako celku, ale nepatří žádnému jejímu konkrétnímu objektu.
4635

47-
For instance, we have `Article` objects and need a function to compare them.
36+
Například máme objekty třídy `Článek` a potřebujeme funkci, která je bude porovnávat.
4837

49-
A natural solution would be to add `Article.compare` static method:
50-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
38+
Přirozené řešení by bylo přidat statickou metodu `Článek.porovnej`:
5139

5240
```js run
5341
class Článek {
@@ -77,29 +65,19 @@ let články = [
7765
alert( články[0].titulek ); // CSS
7866
```
7967

80-
<<<<<<< HEAD
8168
Zde metoda `Článek.porovnej` stojí „nad“ články jako způsob jejich porovnávání. Není to metoda článku, ale metoda celé třídy.
8269

83-
Jiným příkladem může být tzv. „tovární“ metoda. Představme si, že potřebujeme několik způsobů, jak vytvořit článek:
84-
=======
85-
Here `Article.compare` method stands "above" articles, as a means to compare them. It's not a method of an article, but rather of the whole class.
86-
87-
Another example would be a so-called "factory" method.
70+
Jiným příkladem může být tzv. „tovární“ metoda.
8871

89-
Let's say, we need multiple ways to create an article:
90-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
72+
Dejme tomu, že potřebujeme více způsobů, jak vytvořit článek:
9173

9274
1. Vytvořit jej ze zadaných parametrů (`titulek`, `datum` atd.).
9375
2. Vytvořit prázdný článek s dnešním datem.
9476
3. ...nebo nějak jinak.
9577

9678
První způsob můžeme implementovat konstruktorem. A pro druhý můžeme vytvořit statickou metodu třídy.
9779

98-
<<<<<<< HEAD
9980
Například `Článek.vytvořDnešní()` zde:
100-
=======
101-
Such as `Article.createTodays()` here:
102-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
10381

10482
```js run
10583
class Článek {
@@ -126,15 +104,9 @@ Nyní pokaždé, když budeme potřebovat vytvořit dnešní přehled, můžeme
126104
Statické metody se také používají ve třídách vztažených k databázím pro hledání/ukládání/odstraňování záznamů z databáze, například:
127105

128106
```js
129-
<<<<<<< HEAD
130107
// předpokládejme, že Článek je speciální třída pro práci s články
131-
// statická metoda pro odstranění článku:
108+
// statická metoda pro odstranění článku podle jeho id:
132109
Článek.odstraň({id: 12345});
133-
=======
134-
// assuming Article is a special class for managing articles
135-
// static method to remove the article by id:
136-
Article.remove({id: 12345});
137-
>>>>>>> 741d90ce8a730d66e987bff5e9794d6e41cb2f05
138110
```
139111

140112
## Statické vlastnosti

0 commit comments

Comments
 (0)