Tato kapitola stručně shrnuje funkce JavaScriptu, které jsme se již naučili, a věnujeme zvláštní pozornost jemným momentům.
Struktura kódu
Příkazy jsou odděleny středníkem:
alert('Hello'); alert('World');
Obvykle se zalomení řádku také považuje za oddělovač, takže by to také fungovalo:
alert('Hello')
alert('World')
Říká se tomu „automatické vkládání středníků“. Někdy to nefunguje, například:
alert("There will be an error after this message")
[1, 2].forEach(alert)
Většina příruček kódových stylů souhlasí s tím, že za každým příkazem bychom měli dát středník.
Po blocích kódu {...}
nejsou středníky vyžadovány a syntaxe s nimi konstruuje jako smyčky:
function f() {
// no semicolon needed after function declaration
}
for(;;) {
// no semicolon needed after the loop
}
…Ale i když můžeme někam umístit středník „navíc“, není to chyba. Bude ignorováno.
Více v:Struktura kódu.
Přísný režim
Abychom plně aktivovali všechny funkce moderního JavaScriptu, měli bychom skripty začínat s "use strict"
.
'use strict';
...
Direktiva musí být na začátku skriptu nebo na začátku těla funkce.
Bez "use strict"
, vše stále funguje, ale některé funkce se chovají staromódním, „kompatibilním“ způsobem. Obecně bychom preferovali moderní chování.
Některé moderní funkce jazyka (například třídy, které budeme studovat v budoucnu) implicitně umožňují přísný režim.
Více v:Moderní režim, "použij přísné".
Proměnné
Lze deklarovat pomocí:
let
const
(konstantní, nelze změnit)var
(starý styl, uvidíme později)
Název proměnné může obsahovat:
- Písmena a číslice, ale první znak nesmí být číslice.
- Znaky
$
a_
jsou normální, na stejné úrovni jako písmena. - Jsou povoleny i jiné než latinské abecedy a hieroglyfy, ale běžně se nepoužívají.
Proměnné jsou dynamicky typovány. Mohou uložit libovolnou hodnotu:
let x = 5;
x = "John";
Existuje 8 datových typů:
number
pro čísla s plovoucí desetinnou čárkou i pro celá čísla,bigint
pro celá čísla libovolné délky,string
pro struny,boolean
pro logické hodnoty:true/false
,null
– typ s jednou hodnotounull
, což znamená „prázdný“ nebo „neexistuje“,undefined
– typ s jednou hodnotouundefined
, což znamená „nepřiřazeno“,object
asymbol
– u složitých datových struktur a jedinečných identifikátorů jsme se je ještě nenaučili.
typeof
operátor vrací typ hodnoty se dvěma výjimkami:
typeof null == "object" // error in the language
typeof function(){} == "function" // functions are treated specially
Více v: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(question, [default])
- Zeptejte se
question
a vrátí buď to, co návštěvník zadal, nebonull
pokud klikli na „zrušit“. confirm(question)
- Zeptejte se
question
a navrhněte vybrat mezi OK a Zrušit. Volba je vrácena jakotrue/false
. alert(message)
- Vydejte
message
.
Všechny tyto funkce jsou modální , pozastaví provádění kódu a zabrání návštěvníkovi v interakci se stránkou, dokud neodpoví.
Například:
let userName = prompt("Your name?", "Alice");
let isTeaWanted = confirm("Do you want some tea?");
alert( "Visitor: " + userName ); // Alice
alert( "Tea wanted: " + isTeaWanted ); // true
Více v:Interakce:upozornění, výzva, potvrzení.
Operátoři
JavaScript podporuje následující operátory:
- Aritmetický
-
Běžné:
* + - /
, také%
pro zbytek a**
pro mocninu čísla.Binární plus
+
spojuje řetězce. A pokud je některý z operandů řetězec, druhý se také převede na řetězec:alert( '1' + 2 ); // '12', string alert( 1 + '2' ); // '12', string
- Přiřazení
-
Existuje jednoduché zadání:
a = b
a kombinované jakoa *= 2
. - Bitově
-
Bitové operátory pracují s 32bitovými celými čísly na nejnižší bitové úrovni:když jsou potřeba, podívejte se na dokumenty.
- Podmíněné
-
Jediný operátor se třemi parametry:
cond ? resultA : resultB
. Pokudcond
je pravdivý, vrátíresultA
, jinakresultB
. - Logické operátory
-
Logické AND
&&
a NEBO||
provést vyhodnocení zkratu a poté vrátit hodnotu tam, kde se zastavil (není nutnétrue
/false
). Logické NE!
převede operand na booleovský typ a vrátí inverzní hodnotu. - Nulový operátor slučování
-
??
operátor poskytuje způsob, jak vybrat definovanou hodnotu ze seznamu proměnných. Výsledeka ?? b
jea
pokud to nenínull/undefined
a potéb
. - Srovnání
-
Kontrola rovnosti
==
pro hodnoty různých typů je převede na číslo (kroměnull
aundefined
které se rovnají navzájem a nic jiného), takže tyto jsou stejné:alert( 0 == false ); // true alert( 0 == '' ); // true
Ostatní srovnání se také převádějí na číslo.
Operátor přísné rovnosti
===
neprovádí převod:různé typy pro něj vždy znamenají různé hodnoty.Hodnoty
null
aundefined
jsou speciální:rovnají se==
navzájem a nic jiného se nerovnat.Větší/menší porovnání porovnávají řetězce znak po znaku, ostatní typy jsou převedeny na číslo.
- Další operátoři
-
Existuje několik dalších, například operátor čárky.
Více v:Základní operátory, matematika, Porovnání, Logické operátory, Nulové slučovací operátory '??'.
Smyčky
-
Pokryli jsme 3 typy smyček:
// 1 while (condition) { ... } // 2 do { ... } while (condition); // 3 for(let i = 0; i < 10; i++) { ... }
-
Proměnná deklarovaná v
for(let...)
smyčka je viditelná pouze uvnitř smyčky. Můžeme ale také vynechatlet
a znovu použít existující proměnnou. -
Direktivy
break/continue
umožňují opustit celou iteraci smyčky/proud. Použijte štítky k přerušení vnořených smyček.
Podrobnosti v:Smyčky:zatímco a pro.
Později budeme studovat další typy smyček pro práci s objekty.
Konstrukce „přepínače“
Konstrukce „přepínač“ může nahradit několik if
kontroly. Používá ===
(přísná rovnost) pro srovnání.
Například:
let age = prompt('Your age?', 18);
switch (age) {
case 18:
alert("Won't work"); // the result of prompt is a string, not a number
break;
case "18":
alert("This works!");
break;
default:
alert("Any value not equal to one above");
}
Podrobnosti v:Příkaz "přepnout".
Funkce
Probrali jsme tři způsoby, jak vytvořit funkci v JavaScriptu:
-
Deklarace funkce:funkce v hlavním toku kódu
function sum(a, b) { let result = a + b; return result; }
-
Function Expression:funkce v kontextu výrazu
let sum = function(a, b) { let result = a + b; return result; };
-
Funkce šipek:
// expression on the right side let sum = (a, b) => a + b; // or multi-line syntax with { ... }, need return here: let sum = (a, b) => { // ... return a + b; } // without arguments let sayHi = () => alert("Hello"); // with a single argument let double = n => n * 2;
- Funkce mohou mít lokální proměnné:ty, které jsou deklarovány v těle nebo v seznamu parametrů. Takové proměnné jsou viditelné pouze uvnitř funkce.
- Parametry mohou mít výchozí hodnoty:
function sum(a = 1, b = 2) {...}
. - Funkce vždy něco vrátí. Pokud zde není
return
a výsledkem jeundefined
.
Podrobnosti:viz Funkce, Funkce šipek, základy.
Další bude
To byl stručný seznam funkcí JavaScriptu. Zatím jsme se učili jen základy. Dále v tutoriálu najdete další speciality a pokročilé funkce JavaScriptu.