Slabikář JavaScriptu – konverze datových typů a priorita operátorů
Co se stane, když se pokusíte sečíst číslo, numerický řetězec a hodnotu typu Boolean? Podobné situace nastávají v praktickém životě programátora velmi často. Proto jsem se jim rozhodl věnovat speciální díl Slabikáře.
Pokud jediný operátor působí na dvě hodnoty různých datových typů – například sčítáte číslo s numerickým řetězcem, provádíte logický součin (operátor &&) mezi číslem a hodnotou typu Boolean – dochází nejprve ke konverzi operandů na jediný datový typ a až potom k provedení operace. Tyto konverze mají svá přesně definovaná pravidla, která se liší v různých programovacích jazycích.
Příkladem konverze dat je třeba následujících několik řádků JavaScriptu:
|
Pro potřeby součtu došlo k automatické konverzi – všechny hodnoty se převedly na String. Zde je velký rozdíl JavaScriptu od Javy – v Javě k žádným automatickým konverzím nedochází.
Konverze jednotlivých datových typů – tak jak je definovaná v JavaScriptu – ukazuje následující tabulka.
Výstupní datový typ | Vstupní datový typ | ||||||
Boolean | Number | String | Object | ||||
Boolean | bez konverze | false je vstup 0 nebo NaN; jinak true | false pro prázdný řetězec („“); jinak true | true | |||
Number | 1 pro true; 0 pro false | bez konverze | Pokud nemůže být interpretováno jako číslo, hodnota je NaN | Number Objekt | |||
String | „true“ nebo „false“ | Absolutní hodnota čísla. Předřazeno znaménko minus, pokud je číslo záporné. Navíc existují výjimky:
| bez konverze | String Object | |||
Object | Boolean Object | Number Object | String Object | bez konverze |
V prvním výše uvedeném příkladu proběhla implicitní konverze datových typů, kdy zůstává „na vůli“ skriptu, na jaký datový typ budou hodnoty převedeny. Mnohem jistější je přinutit skript k explicitní konverzi. Pokud bude nutné s hodnotami předcházejícího příkladu pracovat jako s čísly, použijte funkci parseInt.
|
Funkce parseInt má jako první argument řetězec převáděný na celé číslo, druhý argument je číselná soustava, ve které je zapsáno číslo v řetězcí. Pokud druhý argument není uveden, zjišťuje se číselná soustava podle číselného prefixu – pokud prefix chybí, použije se desítková soustava, 0x udává hexadecimální a 0 osmičkovou soustavu. Zkuste v předcházejícím příkladu nahradit poslední řádek za:
var d = a + parseInt(b) + c;
Výsledek bude 47.
Pro explicitní konverzi na reálná čísla slouží podobná funkce – parseFloat. Více se o obu těchto funkcích dozvíte v článku JavaScript – datové typy parseInt, parseFloat. Pro konverzi jiných datových typů na String lze použít metodu toString. V tuto chvíli trochu předbíhám výklad o objektech JavaScriptu, jejich vlastnostech a metodách. Chápejte tedy následující kód zatím intuitivně
|
Z proměnné a je číslo zkonvertováno do datového typu String, který je uložen v proměnné c. Nepovinným argumentem metody je číselná soustava pro konverzi čísla na řetězec. Metodu toString je tedy možné používat pro převod čísel do různých číselných soustav. Metodu toString lze používat nejen na číselný objekt, jako je použito v příkladu. Zde je vysvětlující tabulka fungování metody toString pro další objekty:
Objekt | Chování metody toString |
Array | Prvky objektu Array ze zkonvertují na řetězce. Výsledné řetězce jsou oddělené čárkami. |
Boolean | Vrací řetězec „true“ nebo „false“. |
Function | Vrací popsaný řetězec, kde functionname je název funkce:
function functionname( ) { [native code] } |
Number | Vrací textovou reprezentaci čísla. |
String | Vrací hodnotu řetězcového objektu. |
Ostatní | Vrací „[object objectname]“, kde objectname je název typu objektu. |
Při práci s operátory je důležité znát jejich prioritu. I v prioritách operátorů se jednotlivé programovací jazyky liší. Přikládám tedy tabulku, z níž jsou priority operátorů zřejmé – čím výše je operátor v tabulce položen, tím je prioritnější.
Operátor | Popis |
() | uzávorkování operací |
++ — – ~ ! | unární operátory |
* / % | násobení, dělení, modulo |
+ – + | sčítání a odčítání čísel, spojování řetězců |
<< >> >>> | bitové posuvy |
< <= > >= | menší než, menší nebo rovno, větší než, větší nebo rovno |
== != === !== | rovnost, nerovnost, identita, neidentita |
& | bitové AND |
^ | bitové XOR |
| | bitové OR |
&& | logické AND |
|| | logické OR |
?: | podmínkový ternární operátor |
Tímto pokračováním končíme se základními kameny JavaScriptu, které jsou nutné pro další výklad. V následujících dílech slabikáře již budeme vytvářet skripty. Začneme těmi jednoduššími.
Mohlo by vás také zajímat
-
Souboj na trhu s CPU pro servery: AMD vs. Intel
8. prosince 2023 -
Netcat a Ncat
8. prosince 2022
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024