Dátové typy

Premenná v jazyku JavaScript môže obsahovať ľubovoľné údaje. Premenná môže byť v jednom okamihu reťazec a na druhom číslo:

// žiaden error
let message = "hello";
message = 123456;

Programovacie jazyky, ktoré umožňujú takéto veci, sa nazývajú „dynamicky napísané“, čo znamená, že existujú dátové typy, ale premenné nie sú viazané na žiadne z nich.

Existuje sedem základných typov údajov v jazyku JavaScript.

Číslo

let n = 123;
n = 12.345;

Typ premennej „číslo“ reprezentuje čísla s celočíselné aj s pohyblivou čiarkou.

Existuje mnoho operácií pre čísla, napr. násobenie *, delenie /, sčítanie +, odčítanie - a tak ďalej.

Okrem bežných čísel existujú takzvané „špeciálne numerické hodnoty“, ktoré tiež patria tomuto typu údajov: Infinity, -Infinity a NaN.

  • Infinity predstavuje matematické nekonečno ∞. Je to špeciálna hodnota, ktorá je väčšia ako ľubovoľné číslo.
    Môžeme to dosiahnuť v dôsledku delenia nulou:

    alert( 1 / 0 ); // Infinity

    Alebo naň priamo odkazovať:

    alert( Infinity ); // Infinity
  • NaN predstavuje chybu výpočtu. Je výsledkom nesprávnej alebo nedefinovanej matematickej operácie, napríklad:
    alert("nie je číslo" / 2); // NaN, toto rozdelenie je chybné

    Akékoľvek ďalšie operácie s NaN vráti NaN:

    alert("nie je číslo" / 2 + 5); // NaN

    Takže ak existuje niekde v matematickom vyjadrení NaN, šíri sa na celý výsledok.

Špeciálne číselné hodnoty formálne patria k typu premennej „číslo“. Samozrejme, že nie sú čísla v pravom slova zmysle.

Reťazec

Reťazec v jazyku JavaScript musí byť obklopený úvodzovkami.

let str = "Hello";
let str2 = 'Single quotes are ok too';
let phrase = `can embed ${str}`;

V jazyku JavaScript existujú tri typy úvodzoviek:

  1. Dvojité: "Hello".
  2. Jednoité: 'Hello'.
  3. Jednoité spätné: `Hello`.

Dvojité a jednoité úvodzovky sú „jednoduché“ úvodzovky. Medzi nimi nie je žiadny rozdiel v jazyku JavaScript.

Jednoité spätné sú úvodzovky „rozšírenej funkčnosti“. Umožňujú vložiť premenné a výrazy do reťazca tým, že ich zabalíme do $ {…}, napríklad:

let name = "John";

// vložená premenná
alert( `Hello, ${name}!` ); // Hello, John!

// vložený výraz
alert( `the result is ${1 + 2}` ); // výsledok je 3

Výraz vo vnútri $ {…} sa vyhodnotí a výsledok sa stáva súčasťou reťazca. Môžeme sem vložiť hocičo: premennú ako name alebo aritmetický výraz ako 1 + 2 alebo niečo zložitejšie.

Toto je možné zabezpečiť iba pomocou jednoitých spätných úvodzoviek. Ostatné úvodzovky nemajú túto funkciu vloženia!

alert( "výsledok je ${1 + 2}" ); // výsledok je ${1 + 2} (dvojité úvodzovky nič nevložia)

Boolean (logická hodnota)

Booleovský typ má len dve hodnoty: true a false.

Tento typ sa bežne používa na ukladanie hodnôt áno / nie: true znamená „áno, správne“ a false znamená „nie, nesprávne“.

Napríklad:

let nameFieldChecked = true; // áno, políčko name je odškrtnuté
let ageFieldChecked = false; // nie, políčko age nie je odškrtnuté

Booleovské hodnoty sú tiež výsledkom porovnania:

let isGreater = 4 > 1;

alert( isGreater ); // true (výsledok porovnania je "áno")

Hodnota „null“

Špeciálna nulová hodnota nepatrí k žiadnemu z vyššie popísaných typov.

Vytvára vlastný samostatný typ, ktorý obsahuje iba nulovú hodnotu:

let age = null;

Je to len špeciálna hodnota, ktorá predstavuje „nič“, „prázdnu“ alebo „neznámu hodnotu“.

Vo vyššie uvedenom kóde sa uvádza, že vek je z nejakého dôvodu neznámy alebo prázdny, nešpecifikovaný.

Hodnota „undefined“

Osobitná hodnota undefined je tiež oddelená. Vytvára svoj vlastný typ, rovnako ako null.

Význam hodnoty undefined je „hodnota nie je priradená“.

Ak je premenná deklarovaná, ale nie je priradená, potom jej hodnota nie je definovaná:

let x;

alert(x); // ukáže "undefined"

Technicky je možné spraviť z premennej premennú nedefinovanú:

let x = 123;

alert(x); // 123

x = undefined;

alert(x); // "undefined"

Vo všeobecnosti sa takéto nedefinovanie premennej nepraktikuje a preto ak je potrebné odstrániť hodnotu y premennej, odporúča sa priradiť jej hodnotu null.

Objekty

Typ objekt je špeciálny.

Všetky ostatné typy sa nazývajú „primitívne“, pretože ich hodnoty môžu obsahovať iba jednu vec (či už to je reťazec alebo číslo alebo čokoľvek). Na rozdiel od toho sa objekty používajú na uloženie zbierok údajov a zložitejších subjektov. Objektom sa budeme venovať neskôr pri práci s DOM objektami.

Operátor typeof

Typ operátora typeof vráti typ argumentu. Je to užitočné, keď chceme rôzne hodnoty spracovávať inak, alebo si len chcete rýchlo skontrolovať typ premennej.

Podporuje dve formy syntaxe:

  1. Ako operátor: typeof x.
  2. Ako funkcia: typeof(x).
typeof undefined // "undefined"

typeof 0 // "number"

typeof true // "boolean"

typeof "foo" // "string"

typeof Math // "object"  (1)

typeof null // "object"  (2)

typeof alert // "function"  (3)

Math je vstavaný objekt, ktorý poskytuje matematické operácie. Dozvieme sa to v kapitole Čísla. Tu slúži len ako príklad objektu.

Výsledkom typu null je „objekt“. To je zle. Je to oficiálne uznaná chyba v typeof, udržiavaná na kompatibilitu. Samozrejme, null nie je objekt. Je to osobitná hodnota s vlastným samostatným typom.

Výsledok alert typu je „funkcia“. V jazyku JavaScript neexistuje žiadny špeciálny typ „funkcia“. Typeof s nimi zaobchádza odlišne. Formálne je to nesprávne, ale veľmi praktické v praxi.