Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork3
Code structure#67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
Uh oh!
There was an error while loading.Please reload this page.
Merged
Changes fromall commits
Commits
Show all changes
20 commits Select commitHold shift + click to select a range
adbdb74
2.1, part 1
otmon76d1ac1da
2.2
otmon76a97838b
Revert "2.2"
otmon7687ffd75
Revert "2.1, part 1"
otmon7695f2ccd
2.2
otmon7614962d4
Update 1-js/02-first-steps/02-structure/article.md
otmon76477632e
Update 1-js/02-first-steps/02-structure/article.md
otmon76626a615
Update 1-js/02-first-steps/02-structure/article.md
otmon7619de9bc
Update 1-js/02-first-steps/02-structure/article.md
otmon768271f25
Update 1-js/02-first-steps/02-structure/article.md
otmon76e71e56e
Update 1-js/02-first-steps/02-structure/article.md
otmon76eb0ec42
Update 1-js/02-first-steps/02-structure/article.md
otmon76f94fcad
Update 1-js/02-first-steps/02-structure/article.md
otmon76b837349
Update 1-js/02-first-steps/02-structure/article.md
otmon7604185b3
Update 1-js/02-first-steps/02-structure/article.md
otmon76b31fd33
Update 1-js/02-first-steps/02-structure/article.md
otmon763fcb17e
Update 1-js/02-first-steps/02-structure/article.md
otmon76029f379
Update 1-js/02-first-steps/02-structure/article.md
otmon76169b016
Update article.md
otmon768e088b2
Update article.md
otmon76File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
130 changes: 63 additions & 67 deletions1-js/02-first-steps/02-structure/article.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,155 +1,151 @@ | ||
#Struktura kódu | ||
První, co si prostudujeme, jsou stavební bloky kódu. | ||
##Příkazy | ||
Příkazy (anglicky *statement*) jsou syntaktické konstrukce a povely, které provádějí akce. | ||
Už jsme viděli příkaz`alert('Ahoj, světe!')`,který zobrazuje zprávu „Ahoj, světe!“. | ||
V kódu můžeme mít tolik příkazů, kolik chceme. Příkazy mohou být odděleny středníkem. | ||
Například zde rozdělíme „Ahoj světe“ na dvě zprávy: | ||
```js run no-beautify | ||
alert('Ahoj'); alert('Světe'); | ||
``` | ||
Každý příkaz obvykle píšeme na nový řádek, aby kód byl čitelnější: | ||
```js run no-beautify | ||
alert('Ahoj'); | ||
alert('Světe'); | ||
``` | ||
##Středníky [#semicolon] | ||
Ve většině případů, kdy je uveden konec řádku, můžeme středník vynechat. | ||
Toto by také fungovalo: | ||
```js run no-beautify | ||
alert('Ahoj') | ||
alert('Světe') | ||
``` | ||
Zde JavaScriptinterpretuje konec řádku jako „implicitní“ středník. Takové chování se nazývá [automatické vkládání středníku](https://tc39.github.io/ecma262/#sec-automatic-semicolon-insertion). | ||
**Ve většině případů nový řádek znamená středník, ale „ve většině případů“ neznamená „vždy“!** | ||
Existují případy, v nichž nový řádek neznamená středník. Například: | ||
```js run no-beautify | ||
alert(3 + | ||
1 | ||
+ 2); | ||
``` | ||
Tento kód vypíše `6`, protože JavaScriptsem středník nevloží. Je zřejmé, že jestliže řádek končí znaménkemplus `"+"`,je to „neúplný výraz“, takže středník by byl nesprávný. V tomto případě to bude fungovat tak, jak očekáváme. | ||
**Existují však situace, v nichž JavaScript„nedokáže“ vložit středník tam, kde je opravdu zapotřebí.** | ||
V takových případech nastanou chyby, které je poměrně těžké najít a opravit. | ||
````smart header="Příklad chyby" | ||
Pokud jste zvědaví na konkrétní příklad takové chyby, zkuste si tento kód: | ||
```js run | ||
alert("Hello"); | ||
[1, 2].forEach(alert); | ||
``` | ||
O významu hranatých závorek`[]`a klíčového slova`forEach`zatím nemusíte přemýšlet. To probereme později. Nyní si jen zapamatujte výsledek kódu: zobrazí `Ahoj`,pak `1`,pak `2`. | ||
Nyní odstraníme středník před `alert`: | ||
```js run no-beautify | ||
alert("Ahoj") | ||
[1, 2].forEach(alert); | ||
``` | ||
Rozdíl oproti výše uvedenému kódu je pouze v jednom znaku: středník na konci prvního řádku chybí. | ||
Když tento kód spustíme, zobrazí se jen první `Ahoj` (a pak nastane chyba, možná si budete muset otevřít konzoli, abyste ji viděli).Žádná čísla se už nezobrazí. | ||
Je to proto, že JavaScript nepředpokládá středník před hranatými závorkami`[...]`.S kódem v prvním příkladu se tedy zachází jako s jediným příkazem. | ||
Takto jej vidí motor (anglicky *engine*): | ||
```js run no-beautify | ||
alert("Ahoj")[1, 2].forEach(alert); | ||
``` | ||
Vypadá to divně, že? Sloučení řádků v tomto případě je prostě špatně. Za`alert`musíme vložit středník, aby kód správně fungoval. | ||
To se může stát i v jiných situacích. | ||
```` | ||
Doporučujeme vám psát středníky mezi příkazy i tehdy, když je odděluje konec řádku. Toto pravidlo je v komunitě všeobecně přijímáno. Zmíníme to ještě jednou --ve většině případů *je možné* středník vypustit. Je však bezpečnější --zejména pro začátečníky--jej používat. | ||
danipoma marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
##Komentáře [#code-comments] | ||
S postupem času se programy stávají čím dál složitějšími, a proto je nutné do nich vkládat *komentáře*, které popisují, co kód dělá a proč. | ||
Komentáře můžeme vkládat na kterékoli místo ve skriptu. Nemají vliv na jeho výkon, protože je motor jednoduše ignoruje. | ||
**Jednořádkové komentáře začínají dvěma lomítky `//`.** | ||
Celý zbytek řádku je komentář. Může být umístěn na samostatném řádku nebo za příkazem. | ||
Například zde: | ||
```js run | ||
//Tento komentář je umístěn na samostatném řádku | ||
alert('Ahoj'); | ||
alert('světe'); //Tento komentář je za příkazem | ||
``` | ||
**Víceřádkové komentáře začínají lomítkem ahvězdičkou<code>/*</code>a končí hvězdičkou a lomítkem <code>*/</code>.** | ||
Například takto: | ||
```js run | ||
/*Příklad se dvěma zprávami. | ||
Toto je víceřádkový komentář. | ||
*/ | ||
alert('Ahoj'); | ||
alert('světe'); | ||
``` | ||
Obsah komentáře se ignoruje, proto jestliže mezi<code>/* ... */</code> vložíme kód, neprovede se. | ||
Někdy může přijít vhod dočasně vykomentovat část kódu: | ||
```js run | ||
/*Zakomentovaný kód | ||
alert('Ahoj'); | ||
*/ | ||
alert('světe'); | ||
``` | ||
```smart header="Používejte zkratky!" | ||
Ve většině editorů se dá řádek kódu vykomentovat pomocí zkratky`key:Ctrl+/`pro jednořádkový komentář a`key:Ctrl+Shift+/`pro víceřádkový komentář (označte část kódu a stiskněte uvedené klávesy).Na Macu zkuste `key:Cmd`místo`key:Ctrl`a `key:Option`místo `key:Shift`. | ||
``` | ||
````warn header="Vnořené komentáře nejsou povoleny!" | ||
Uvnitř `/*...*/` nesmí být další `/*...*/`. Takový kód skončí s chybou: | ||
```js run no-beautify | ||
/* | ||
/*vnořený komentář ?!? */ | ||
*/ | ||
alert( 'světe' ); | ||
``` | ||
```` | ||
Neváhejte do svého kódu vkládat komentáře. Sice zvětšují velikost kódu, ale to není vůbec žádný problém. Existuje mnoho nástrojů, které kód před nasazením na produkční server minimalizují a odstraní z něj komentáře, nemají tedy žádný vliv na výkon. | ||
Později v tomto tutoriálu budeme mít kapitolu<info:code-quality>, která se mimo jiné zaobírá i tím, co by mělo a nemělo být v komentáři obsaženo. |
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.