Lekce 3 - Základní datové typy v JavaScriptu a jejich funkce
V minulé lekci, Začínáme s JavaScriptem - První skripty, jsme si naprogramovali několik prvních skriptů a naučili se pracovat s proměnnými.
Dnes se v JavaScript tutoriálu podrobně podíváme na základní datové
typy a to přesněji řetězce, čísla a boolean
. Ačkoli
JavaScript řeší datové typy do určité míry za nás, nemůžeme se jim
úplně vyhýbat a měli bychom rozumět tomu, jak fungují.
Rekapitulace
Javascript je dynamicky typovaný jazyk. Plně nás odstiňuje od toho, že proměnná má nějaký datový typ. Ona ho samozřejmě má, ale nedává nám to najevo. Lze vytvořit proměnnou s číselnou hodnotou, následně ji nastavit objekt a potom desetinné číslo. Jazyk se s tím sám vypořádá a typ automaticky změní. Protože typy u proměnných nemusíme uvádět, začínající programátoři se možná radují, ale časem zjistí, že má tento systém i určité nevýhody. Jedná se zejména o snížení schopností automatické kontroly správnosti kódu.
Základní datové typy jsou tyto:
String
- textNumber
- číslo s/bez desetinné čárkyBoolean
- pravda/nepravdaObject
Null
Undefined
Některé datové typy, jako pole a další objekty, si vysvětlíme později. Ty ostatní si popíšeme dnes. Nový standard ECMA 6 přinesl ještě tzv. symboly, ale k těm se dostaneme až seriálu o OOP.
String
String
, v překladu textový řetězec, je řada znaků
uložená v za sebou jdoucích bajtech paměti. Maximální délka není
přesně specifikována, záleží na interpretu. V některých variantách
může být teoreticky nekonečná a je omezena pouze velikostí paměti
RAM.
Jak jsme si již vysvětlili dříve, řetězce lze zapisovat pomocí dvojitých nebo i jednoduchých uvozovek, tzn.:
let s1 = "nějaký text"; let s2 = 'nějaký text';
Jednoduché uvozovky '
(apostrof) se napíši
pomocí klávesy SHIFT a následující klávesy:

Uvozovky lze kombinovat i uvnitř řetězce. Pokud tedy např. chceme napsat jednoduchou uvozovku, vložíme řetězec do uvozovek dvojitých:
let s1 = 'Mám rád znak ", protože se mi líbí.'; let s1 = "David, yes, that's me!";
Pokud je potřeba zapsat v řetězci stejnou uvozovku, jako ve kterých je
řetězec zapsaný, musí se uvozovka tzv. odescapovat. To aby ji interpret
nevyhodnotil jako ukončení řetězce, ale pouze jako obyčejný znak. K tomu
se používá zpětné lomítko (\
).
Zpětné lomítko na české klávesnici se napíše pomocí pravého ALT a písmene Q:

Pro odescapování uvozovky nám už nic nebrání:
let x = "Mám rád znak \", protože se mi líbí.";
Znaky s tímto lomítkem se souhrnně nazývají escape sekvencí. Kromě uvozovek můžeme pomocí lomítka zapsat ještě několik speciálních znaků, které by se nám jinak zapisovali těžko. Zde je jejich seznam:
\a
- Pípnutí\b
- Backspace\f
- Přeskočení na další "stánku"\n
- Nový řádek\r
- Carriage return (někdy jako součást odřádkování)\t
- Horizontální tabulátor\v
- Vertikální tabulátor\\
- Zpětné lomítko\'
- Jednoduchá uvozovka\"
- Dvojitá uvozovka\0
- Nulový znak (také používaný pro ukončení řetězce)
Všimněte si, že když chceme zapsat zpětné lomítko, musíme zapsat dvě. Jinak si JavaScript bude myslet, že píšeme nějaký speciální znak.
Funkce a vlastnosti řetězců
Index
Za pomoci indexů lze procházet jednotlivé znaky v řetězci. Index se
zapisuje do hranatých závorek za názvem proměnné. Čísluje se od nuly,
takže pozor. Pokud chcete vybrat první znak, je to 0
.
let x = "text"; document.write(x[0]); // vypíše první znak řetězce document.write(x[3]); // vypíše čtvrtý znak
length
Vlastnost (jak již z názvu vypovídá) obsahuje délku řetězce ve znacích.
let s = "text"; document.write(s.length); // Vypíše hodnotu 4
trim()
Pokud text načítáme od uživatele, může se nám stát, že před něj
nebo za něj napíše mezeru. Kolem řetězců se také často vyskytují
další tzv. bílé znaky, např. konce řádků. Funkce trim()
tyto bílé znaky okolo řetězce odstraní, aby nekomplikovaly další
zpracování. Pokud jsou uvnitř, zůstanou ponechány.
let s = " Jan Novák "; s = s.trim(); // V s je nyní uloženo "Jan Novák"
replace()
Funkce nahradí hledanou hodnotu v řetězci jinou.
let str = "PHP je nejlepší!"; let s = str.replace("PHP", "JavaScript");
toUpperCase()
a toLowerCase()
Změní všechna písmena v řetězci na velká nebo na malá:
let s = "string"; s.toUpperCase(); // velké znaky s.toLowerCase(); // malé znaky
concat()
Spojuje dva a více řetězců. Tato funkce je volána automaticky když se
String
y pokusíme sečíst pomocí operátoru +
.
str1 = "Karel"; str2 = "Josef"; str3 = "Petra"; let spojene = str1.concat(str2,str3); let spojene2 = str1 + str2 + str3;
Poslední 2 řádky dělají to samé, spojí řetězce do jednoho dlouhého.
substring()
a substr()
Funkce vrací vybranou část řetězce, které se říká podřetězec. Obě dělají v podstatě to samé, avšak liší se významem parametrů.
s = "Tutoriály na ITnetworku"; podretezec1 = s.substr(2, 6); // Vrací znaky od druhé pozice, 6 znaků, tedy "toriál" podretezec2 = s.substring(2, 6); // vrací znaky od druhé do 6 pozice, tedy tori
split()
Rozdělí řetězec na pole podřetězců pomocí určitého znaku. S poli se teprve blíže setkáme.
str.split("-"); // jak-se-mas == [0] jak [1] se [2] mas
indexOf()
, lastIndexOf()
a
search()
Vrací pozici daného podřetězce.
str.indexOf("ahoj"); // vrací první index str.lastIndexOf("ahoj"); // vrací poslední nalezený index str.search("ahoj"); // vrací index hledaného řetězce nebo REGEX výrazu (o těch se dozvíme dále)
match()
Vrací shodu s výrazem v řetězci. Používá se hlavně pro regulární výrazy(Regex), viz další lekce.
Čísla
Čísla lze zapsat dvěma zápisy. Zaprvé tak, jak jsme zvyklí:
let x = 10;
A druhý zápis pomocí vědecké (exponenciální) notace:
let x = 10e5; // 10**5 = 1 000 000
S čísly lze samozřejmě provádět většinu nám známých základních
operací jako sčítání, násobení, dělení... Máme zde i zbytek po
dělení (tzv. modulo) a to pomocí operátoru %
.
Procenta se na české klávesnici napíši pomocí SHIFT a následující klávesy:

Všechna čísla jsou v JavaScriptu ukládána jako 64 bitové a jsou počítána s přesností na 15 čísel.
Funkce a vlastnosti čísel
isNaN(hodnota)
Zjistí, zda je objekt v parametru funkce číslo či nikoli.
NaN
Označuje zkratku Not a Number.
Vrací true
nebo false
(pravda/nepravda) podle
toho, zda je parametrem číslo.
toPrecision(x)
Ořízne číslo na danou přesnost.
i.toString()
Převede číslo na řetězec, tzn. číslo se stane plnohodnotným řetězcem znaků.
toExponential(x)
Převede číslo na exponenciální (vědeckou) notaci. Např. pro hodnotu
100
to bude 1e2
.
Number.MAX_VALUE
a Number.MIN_VALUE
Vrací největší / nejmenší možné číslo v JavaScriptu.
Knihovna Math
Knihovna Math
je jednou ze základních knihoven JavaScriptu.
Obsahuje velmi užitečné funkce a vlastnosti, např. číslo Pí,
max()
, umocňování... Zde si jich pár ukážeme.
K proměnným a funkcím knihoven přistupujeme pomocí operátoru tečky.
Math.PI // číslo PI Math.E // Eulerovo číslo Math.LN10 // Logaritmus 10 Math.SQRT2 // druhá odmocnina Math.max(1,10) // Vrátí větší číslo. Opakem je funkce min() Math.pow(4,3) // 4 na třetí == 64 Math.sqrt(9) // 2 odmocnina čísla Math.random() // náhodné číslo 0 – 1 Math.abs(x) // absolutní hodnota čísla Math.round(x) // zaokrouhlení podle obvyklých pravidel Math.ceil(x) // zaokrouhlení nahoru Math.floor(x) // zaokrouhlení dolů Math.cos(x) // cosinus Math.sin(x) // sinus Math.log(x) // přirozený logaritmus (základem je Eulerovo číslo)
Boolean
Logický datový typ, nabývá pouze dvou hodnot 0
nebo
1
(true
nebo false
). Jeho hodnota je tedy
buď pravdivá nebo nepravdivá. Používá se pro vyhodnocení podmínek a
cyklů, ke kterým se dostaneme v dalších dílech.
Null
/ Undefined
Oba dva datové typy zastupují prázdnou proměnnou. Avšak je zde rozdíl.
null
je nevytvořený objekt, undefined
naopak
objektem není.
A to je pro dnešek vše.
V příští lekci, Podmínky v JavaScriptu, se podíváme na podmínky, díky kterým naše
aplikace začnou být zas o něco zajímavější
Komentáře


Zobrazeno 10 zpráv z 51. Zobrazit vše