Typová konverzia

Väčšinu času operátory a funkcie automaticky prevedú hodnoty, ktoré sa im dajú na vstupe, na správny typ. Toto sa nazýva „typová konverzia“.

Napríklad, upozornenie alert automaticky prevádza akúkoľvek hodnotu na reťazec, aby sa zobrazila. Matematické operácie konvertujú hodnoty na čísla.

Existujú aj prípady, keď musíme explicitne previesť hodnotu na očakávaný typ.

ToString

Konverziu na reťazec použijeme v prípade, že chceme previesť konkrétnu numerickú hodnotu na reťazec.

Napríklad alert(value) ukáže hodnotu premennej value.

Funkciu String (value) môžeme tiež zavolať na konverziu hodnoty na reťazec:

let value = true;
alert(typeof value); // boolean

value = String(value); // teraz je premenná value reťazec "true"
alert(typeof value); // reťazec

ToNumber

Numerická konverzia sa stane automaticky v matematických funkciách a výrazoch.

Napríklad, ak je delenie / použité na nečíselných typoch reprezentujúce čísla:

alert( "6" / "2" ); // 3, reťazce sú prevedené na čísla
Môžeme použiť funkciu Number (value) na explicitné premenenie hodnoty na číslo:
let str = "123";
alert(typeof str); // reťazec

let num = Number(str); // zmení sa na číslo 123

alert(typeof num); // číslo

Explicitná konverzia sa zvyčajne vyžaduje, keď čítame hodnotu z reťazcového zdroja ako textový formulár, ale očakávame zadanie čísla.

Ak reťazec nie je platné číslo, výsledkom takejto konverzie je NaN. Napríklad:

let age = Number("an arbitrary string instead of a number");

alert(age); // NaN, konverzia zlyhala

Platí, že:

Pôvodná hodnota Hodnota po prevedení
undefined NaN
null 0
true a false 1 a 0
string Medzery zo začiatku a konca reťazca odstráni. Ak ostane prázdny reťazec, tak vráti 0. Inak vráti číslo z reťazca a pri nastaní chyby vráti NaN.

Napríklad:

alert( Number("   123   ") ); // 123
alert( Number("123z") );      // NaN (error pri čítaní znaku "z")
alert( Number(true) );        // 1
alert( Number(false) );       // 0

ToBoolean

Booleovská konverzia je najjednoduchšia.

Ku konverzii dochádza v logických operáciách, ale možno ich tiež vykonať explicitne s volaním funkcie Boolean(value).

Pravidlo konverzie:

  • Hodnoty, ktoré sú intuitívne prázdne, ako 0, "" (prázdny reťazec), null, undefined a NaN, sa stanú nepravdivými – false.
  • Ostatné hodnoty sa stanú pravdivými – true.
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false

alert( Boolean("hello") ); // true
alert( Boolean("") ); // false