JavaScriptové speciály

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 hodnotou null , což znamená „prázdný“ nebo „neexistuje“,
  • undefined – typ s jednou hodnotou undefined , což znamená „nepřiřazeno“,
  • object a symbol – 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, nebo null pokud klikli na „zrušit“.
confirm(question)
Zeptejte se question a navrhněte vybrat mezi OK a Zrušit. Volba je vrácena jako true/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é jako a *= 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 . Pokud cond je pravdivý, vrátí resultA , jinak resultB .

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ýsledek a ?? b je a 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 a undefined 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 a undefined 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é vynechat let 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:

  1. Deklarace funkce:funkce v hlavním toku kódu

    function sum(a, b) {
     let result = a + b;
    
     return result;
    }
  2. Function Expression:funkce v kontextu výrazu

    let sum = function(a, b) {
     let result = a + b;
    
     return result;
    };
  3. 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 je undefined .

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.