Tato kapitola krátce opakuje prvky JavaScriptu, které jsme se doposud nauÄili. Zvláštnà pozornost vÄnuje citlivým mÃstům.
Struktura kódu
PÅÃkazy jsou ukonÄeny stÅednÃkem:
alert('Ahoj'); alert('svÄte');
Konec Åádku se zpravidla také považuje za stÅednÃk, takže fungovat bude i toto:
alert('Ahoj')
alert('svÄte')
To se nazývá âautomatické vkládánà stÅednÃkuâ. NÄkdy to vÅ¡ak nefunguje, napÅÃklad:
alert("Po této zprávÄ bude ohlášena chyba")
[1, 2].forEach(alert)
VÄtÅ¡ina průvodců stylem kódu se shoduje, že bychom mÄli uvádÄt stÅednÃk za každým pÅÃkazem.
StÅednÃky nejsou vyžadovány za bloky kódu {...} a syntaktickými konstrukcemi, které je obsahujÃ, napÅÃklad cykly:
function f() {
// za deklaracà funkce nenà stÅednÃk zapotÅebÃ
}
for(;;) {
// za cyklem nenà stÅednÃk zapotÅebÃ
}
â¦Ale i když nÄkde uvedeme stÅednÃk ânavÃcâ, nenà to chyba. StÅednÃk bude ignorován.
VÃce v kapitole: Struktura kódu.
Striktnà režim
Abychom plnÄ využili vÅ¡echny vlastnosti modernÃho JavaScriptu, mÄli bychom zahajovat skripty direktivou "use strict".
'use strict';
...
Tato direktiva musà být uvedena na zaÄátku skriptu nebo tÄla funkce.
Bez "use strict" bude vÅ¡echno stále fungovat, ale nÄkteré prvky se budou chovat staromódnÄ, âkompatibilnÄâ. Obvykle dáváme pÅednost modernÃmu chovánÃ.
NÄkteré modernà vlastnosti jazyka (napÅ. tÅÃdy, které budeme probÃrat v budoucnu) implicitnÄ umožÅujà striktnà režim.
VÃce v kapitole: Modernà režim, âuse strictâ.
PromÄnné
Lze je deklarovat pomocÃ:
letconst(konstanta, nemůže být mÄnÄna)var(ve starém stylu, uvidÃme pozdÄji)
Název promÄnné může obsahovat:
- PÃsmena a ÄÃslice, ale prvnà znak nesmà být ÄÃslice.
- Znaky
$a_, které lze použÃvat bÄžnÄ jako pÃsmena. - Povoleny jsou i znaky nelatinských abeced a hieroglyfy, ale obvykle se nepoužÃvajÃ.
PromÄnné jsou dynamicky typovány. Může do nich být uložena jakákoli hodnota:
let x = 5;
x = "Jan";
Existuje osm datových typů:
numberpro ÄÃsla, a to jak celá, tak s pohyblivou Åádovou Äárkou,bigintpro celá ÄÃsla libovolné délky,stringpro ÅetÄzce,booleanpro logické hodnoty:true/false,nullâ typ s jedinou hodnotounull, která znamená âprázdnáâ nebo âneexistujÃcÃâ,undefinedâ typ s jedinou hodnotouundefined, která znamená ânepÅiÅazenáâ,objectasymbolâ pro komplexnà datové struktury a unikátnà identifikátory, zatÃm jsme je neprobÃrali.
Operátor typeof vracà typ hodnoty se dvÄma výjimkami:
typeof null == "object" // chyba v jazyce
typeof function(){} == "function" // s funkcemi se zacházà odliÅ¡nÄ
VÃce v kapitole: PromÄnné a Datové typy.
Interakce
Jako pracovnà prostÅedà použÃváme prohlÞeÄ, takže základnà funkce uživatelského rozhranà budou:
prompt(otázka, [default])- Položà otázku
otázkaa vrátà buÄ to, co návÅ¡tÄvnÃk zadal, nebonull, jestliže stiskl âStornoâ. confirm(otázka)- Položà otázku
otázkaa nabÃdne na výbÄr mezi OK a Storno. Zvolená možnost je vrácena jakotrue/false. alert(zpráva)- VypÃÅ¡e zprávu
zpráva.
VÅ¡echny tyto funkce jsou modálnÃ. Pozastavà vykonávánà kódu a znemožnà uživateli jinou interakci se stránkou, dokud neodpovÃ.
PÅÃklad:
let uživatelskéJméno = prompt("Jak se jmenujete?", "Alice");
let dáSiÄaj = confirm("Dáte si Äaj?");
alert( "NávÅ¡tÄvnÃk: " + uživatelskéJméno ); // Alice
alert( "Dá si Äaj: " + dáSiÄaj ); // true
VÃce v kapitole: Interakce: alert, prompt, confirm.
Operátory
JavaScript podporuje následujÃcà operátory:
- Aritmetické
-
Obvyklé:
* + - /, dále%pro zbytek po dÄlenà a**pro mocninu.Binárnà plus
+spojuje ÅetÄzce. Jestliže je jeden z operandů ÅetÄzec, bude na ÅetÄzec pÅeveden i druhý operand:alert( '1' + 2 ); // '12', ÅetÄzec alert( 1 + '2' ); // '12', ÅetÄzec - PÅiÅazenÃ
-
Existuje jednoduché pÅiÅazenÃ
a = ba kombinovaná pÅiÅazenÃ, napÅ.a *= 2. - Bitové
-
Bitové operátory pracujà se 32-bitovými celými ÄÃsly na nejnižšÃ, bitové úrovni: až je budete potÅebovat, viz dokumentaci.
- PodmÃnÄný
-
Jediný operátor se tÅemi parametry:
podmÃnka ? výsledekA : výsledekB. Je-lipodmÃnkapravdivá, vrátÃvýsledekA, jinak vrátÃvýsledekB. - Logické
-
Logické AND
&&a OR||provádÄjà zkrácené vyhodnocovánà a pak vrátà hodnotu, na které se zastavily (nemusà to nutnÄ býttrue/false). Logické NOT!pÅevádà operand na typ boolean a vracà opaÄnou hodnotu. - Koalescence
-
Operátor
??poskytuje způsob, jak vybrat definovanou hodnotu ze seznamu promÄnných. Výsledeka ?? bjea, pokud nenÃnull/undefined; v takovém pÅÃpadÄ je výsledekb. - PorovnávánÃ
-
Test rovnosti
==pro hodnoty různých typů je pÅevede na ÄÃslo (s výjimkounullaundefined, které se rovnajà sobÄ navzájem a niÄemu jinému), takže tyto hodnoty jsou si rovny:alert( 0 == false ); // true alert( 0 == '' ); // trueJiná porovnánà se pÅevádà také na ÄÃsla.
Operátor striktnà rovnosti
===tuto konverzi neprovádÃ: různé typy pro nÄj vždy znamenajÃ, že hodnoty se nerovnajÃ.Hodnoty
nullaundefinedjsou speciálnÃ: rovnajà se==sobÄ navzájem a nerovnajà se niÄemu jinému.Operátory porovnánà vÄtÅ¡Ã/menšà porovnávajà ÅetÄzce znak po znaku, ostatnà typy se pÅevádÄjà na ÄÃsla.
- OstatnÃ
-
Existuje nÄkolik dalÅ¡Ãch operátorů, napÅ. operátor Äárky.
VÃce v kapitolách: Základnà operátory, matematika, PorovnávánÃ, Logické operátory, Operátor koalescence â??â.
Cykly
-
Probrali jsme tÅi druhy cyklů:
// 1 while (podmÃnka) { ... } // 2 do { ... } while (podmÃnka); // 3 for(let i = 0; i < 10; i++) { ... } -
PromÄnná deklarovaná v cyklu
for(let...)je viditelná jen uvnitÅ tohoto cyklu. Můžeme vÅ¡ak takéletvypustit a znovu použÃt již existujÃcà promÄnnou. -
Direktivy
break/continueumožÅujà ukonÄit celý cyklus/aktuálnà iteraci. Pro opuÅ¡tÄnà vnoÅených cyklů použÃvejte návÄÅ¡tÃ.
VÃce v kapitole: Cykly: while a for.
PozdÄji prostudujeme dalšà druhy cyklů, které pracujà s objekty.
Konstrukce âswitchâ
Konstrukce âswitchâ dokáže nahradit nÄkolik testů if. K porovnávánà použÃvá === (striktnà rovnost).
PÅÃklad:
let vÄk = prompt('Kolik je vám let?', 18);
switch (vÄk) {
case 18:
alert("Tohle nefunguje"); // výsledkem dotazu prompt je ÅetÄzec, ne ÄÃslo
break;
case "18":
alert("Tohle funguje!");
break;
default:
alert("Jakákoli hodnota, která se nerovná žádné výše uvedené");
}
VÃce v kapitole: PÅÃkaz âswitchâ.
Funkce
Uvedli jsme tÅi způsoby, jakými lze v JavaScriptu vytvoÅit funkci:
-
Deklarace funkce: funkce v hlavnÃm kódu
function souÄet(a, b) { let výsledek = a + b; return výsledek; } -
FunkÄnà výraz: funkce v kontextu výrazu
let souÄet = function(a, b) { let výsledek = a + b; return výsledek; }; -
Šipkové funkce:
// výraz na pravé stranÄ let souÄet = (a, b) => a + b; // nebo vÃceÅádková syntaxe s { ... }, zde potÅebujeme return: let souÄet = (a, b) => { // ... return a + b; } // bez argumentů let ÅekniAhoj = () => alert("Ahoj"); // s jediným argumentem let dvojnásobek = n => n * 2;
- Funkce mohou obsahovat lokálnà promÄnné: ty jsou deklarovány uvnitÅ jejich tÄla nebo v seznamu parametrů. Tyto promÄnné jsou viditelné jen uvnitÅ funkce.
- Parametry mohou mÃt nastavené výchozà hodnoty:
function souÄet(a = 1, b = 2) {...}. - Funkce vždy nÄco vrátÃ. Neobsahuje-li pÅÃkaz
return, jejÃm výsledkem jeundefined.
VÃce v kapitolách: Funkce, Å ipkové funkce (arrow funkce) â základy.
Bude toho vÃc
Toto byl krátký seznam prvků JavaScriptu. Dosud jsme prostudovali pouze základy. Dále v tomto tutoriálu naleznete dalšà speciálnà a pokroÄilé prvky JavaScriptu.
KomentáÅe
<code>, pro nÄkolik Åádků je obalte znaÄkou<pre>, pro vÃce než 10 Åádků vložte odkaz na pÃskoviÅ¡tÄ (plnkr, jsbin, codepenâ¦)