Operátory a funkce vÄtÅ¡inou automaticky pÅevedou hodnoty, které jim byly zadány, na správný typ.
NapÅÃklad alert automaticky pÅevede libovolnou hodnotu na ÅetÄzec a ten zobrazÃ. Matematické operace pÅevádÄjà hodnoty na ÄÃsla.
Existujà vÅ¡ak pÅÃpady, v nichž musÃme konverzi hodnoty na potÅebný typ explicitnÄ uvést.
V této kapitole se jeÅ¡tÄ nebudeme zabývat objekty. ProzatÃm budeme hovoÅit jen o primitivnÃch typech.
Až se pozdÄji dozvÃme nÄco o objektech, v kapitole Konverze objektů na primitivnà typy uvidÃme, jak do toho zapadajÃ.
Konverze na ÅetÄzec
Konverze na ÅetÄzec se odehraje tehdy, když potÅebujeme hodnotu ve formÄ ÅetÄzce.
Provádà ji napÅÃklad alert(hodnota), aby mohla zobrazit hodnotu.
Můžeme také volat funkci String(hodnota), která pÅevede zadanou hodnotu na ÅetÄzec:
let hodnota = true;
alert(typeof hodnota); // boolean
hodnota = String(hodnota); // hodnota je nynà ÅetÄzec "true"
alert(typeof hodnota); // string (ÅetÄzec)
Konverze na ÅetÄzec je vÄtÅ¡inou zÅejmá: false se pÅevede na "false", null se pÅevede na "null", atd.
Konverze na ÄÃslo
Konverze na ÄÃslo se automaticky odehrává v matematických funkcÃch a výrazech.
NapÅÃklad když použijeme dÄlenà / na nÄco jiného než ÄÃsla:
alert( "6" / "2" ); // 3, ÅetÄzce se konvertujà na ÄÃsla
Pro explicitnà konverzi hodnoty hodnota na ÄÃslo můžeme použÃt funkci Number(hodnota):
let Åtzc = "123";
alert(typeof Åtzc); // string (ÅetÄzec)
let Äslo = Number(Åtzc); // stane se z nÄj ÄÃslo 123
alert(typeof Äslo); // number (ÄÃslo)
Explicitnà konverze je obvykle potÅebná, když naÄÃtáme hodnotu z ÅetÄzcového zdroje, napÅÃklad z textového formuláÅe, ale oÄekáváme zadánà ÄÃsla.
NenÃ-li v ÅetÄzci platné ÄÃslo, výsledkem konverze bude NaN. NapÅÃklad:
let vÄk = Number("nÄjaký ÅetÄzec mÃsto ÄÃsla");
alert(vÄk); // NaN, konverze neuspÄla
Pravidla pro konverzi na ÄÃslo:
| Hodnota | PÅevede se na⦠|
|---|---|
undefined |
NaN |
null |
0 |
true a false |
1 a 0 |
ÅetÄzec |
Odstranà se bÃlé znaky (mezery, tabulátory \t, konce Åádku \n atd.) ze zaÄátku a konce. Je-li výsledný ÅetÄzec prázdný, výsledkem je 0. Jinak se ÄÃslo âpÅeÄteâ z ÅetÄzce. PÅi chybÄ je vydáno NaN. |
PÅÃklady:
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (chyba pÅi Ätenà ÄÃsla u znaku "z")
alert( Number(true) ); // 1
alert( Number(false) ); // 0
VÅ¡imnÄte si, že null a undefined se tady chovajà rozdÃlnÄ: null se pÅevede na nulu, zatÃmco undefined se pÅevede na NaN.
Tuto konverzi provádà i vÄtÅ¡ina matematických operátorů. UvidÃme to v následujÃcà kapitole.
Konverze na boolean
Konverze na boolean je nejjednoduššÃ.
Odehrává se v logických operátorech (pozdÄji se setkáme s testy platnosti podmÃnky a podobnými vÄcmi), ale můžeme ji provést i explicitnÄ volánÃm Boolean(hodnota).
Pravidla konverze:
- Hodnoty, které jsou intuitivnÄ âprázdnéâ, tj.
0, prázdný ÅetÄzec,null,undefinedaNaN, se pÅevedou nafalse. - Ostatnà hodnoty se pÅevedou na
true.
PÅÃklad:
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("ahoj") ); // true
alert( Boolean("") ); // false
"0" se pÅevede na trueNÄkteré jazyky (konkrétnÄ PHP) zacházejà s ÅetÄzcem "0" jako s false, avÅ¡ak v JavaScriptu je neprázdný ÅetÄzec vždy true.
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // mezery, také true (každý neprázdný ÅetÄzec je true)
ShrnutÃ
TÅi nejÄastÄji použÃvané typové konverze jsou na ÅetÄzec, na ÄÃslo a na boolean.
Konverze na ÅetÄzec â Nastává, když nÄco vypisujeme. Můžeme ji provést pomocà String(hodnota). Konverze na ÅetÄzec je u primitivnÃch typů obvykle zÅejmá.
Konverze na ÄÃslo â Nastává pÅi matematických operacÃch. Můžeme ji provést pomocà Number(hodnota).
Konverze se ÅÃdà tÄmito pravidly:
| Hodnota | PÅevede se na⦠|
|---|---|
undefined |
NaN |
null |
0 |
true / false |
1 / 0 |
ÅetÄzec |
NaÄte se âdoslovnÄâ, bÃlé znaky (mezery, tabulátory \t, konce Åádku \n atd.) na obou stranách se ignorujÃ. Z prázdného ÅetÄzce se stane 0. PÅi chybÄ je vydáno NaN. |
Konverze na boolean â Nastává pÅi logických operacÃch. Můžeme ji provést pomocà Boolean(hodnota).
ÅÃdà se tÄmito pravidly:
| Hodnota | PÅevede se na⦠|
|---|---|
0, null, undefined, NaN, "" |
false |
| jakákoli jiná hodnota | true |
VÄtÅ¡inu tÄchto pravidel je snadné pochopit a zapamatovat si. Významné výjimky, v nichž lidé obvykle chybujÃ, jsou:
undefinedpÅevedené na ÄÃslo jeNaN, ne0."0"a ÅetÄzce obsahujÃcà jen mezery, napÅ." ", jsou po pÅevodu na boolean vyhodnoceny jako true.
O objektech se zde nezmiÅujeme. PozdÄji, až se v JavaScriptu nauÄÃme vÅ¡echny potÅebné základy, se k nim vrátÃme v kapitole Konverze objektů na primitivnà typy, která je vÄnována výluÄnÄ objektům.
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â¦)