Existuje jeÅ¡tÄ jedna velice jednoduchá a výstižná syntaxe vytváÅenà funkcÃ, která Äasto bývá lepšà než funkÄnà výrazy.
Nazývá se âÅ¡ipková funkceâ, jelikož vypadá takto:
let funkce = (arg1, arg2, ..., argN) => výraz;
TÃm se vytvoÅà funkce funkce, která pÅijÃmá argumenty arg1..argN, pak s jejich použitÃm vyhodnotà výraz na pravé stranÄ a vrátà jeho výsledek.
Jinými slovy, je to kratšà verze tohoto:
let funkce = function(arg1, arg2, ..., argN) {
return výraz;
};
PodÃvejme se na konkrétnà pÅÃklad:
let souÄet = (a, b) => a + b;
/* Tato šipková funkce je zkrácenou formou této funkce:
let souÄet = function(a, b) {
return a + b;
};
*/
alert( souÄet(1, 2) ); // 3
Jak vidÃte, (a, b) => a + b znaÄà funkci, která má dva parametry a a b. Když je vykonána, vyhodnotà výraz a + b a vrátà jeho výsledek.
-
Máme-li pouze jeden parametr, můžeme závorky kolem nÄj vynechat, ÄÃmž se zápis jeÅ¡tÄ zkrátÃ.
PÅÃklad:
let dvojnásobek = n => n * 2; // zhruba totéž jako: let dvojnásobek = function(n) { return n * 2 } alert( dvojnásobek(3) ); // 6 -
Nejsou-li žádné parametry, závorky budou prázdné, ale musà být uvedeny:
let ÅekniAhoj = () => alert("Ahoj!"); ÅekniAhoj();
Å ipkové funkce můžeme použÃvat stejným způsobem jako funkÄnà výrazy.
NapÅÃklad k dynamickému vytvoÅenà funkce:
let vÄk = prompt("Kolik je vám let?", 18);
let uvÃtánà = (vÄk < 18) ?
() => alert('Ahoj!') :
() => alert("Dobrý den!");
uvÃtánÃ();
Å ipkové funkce mohou na prvnà pohled vypadat podivnÄ a nepÅÃliÅ¡ ÄitelnÄ, ale to se rychle zmÄnÃ, jakmile si oÄi na tuto strukturu zvyknou.
Jsou velmi vhodné pro jednoduché jednoÅádkové akce, kdy se nám prostÄ nechce psát pÅÃliÅ¡ mnoho slov.
VÃceÅádkové Å¡ipkové funkce
Å ipkové funkce, které jsme doposud vidÄli, byly velmi jednoduché. PÅebÃraly argumenty z levé strany =>, vyhodnotily s nimi výraz na pravé stranÄ a vrátily jeho hodnotu.
NÄkdy potÅebujeme složitÄjšà funkci s vÃce výrazy a pÅÃkazy. V takovém pÅÃpadÄ je můžeme uzavÅÃt do složených závorek. Hlavnà rozdÃl je v tom, že složené závorky vyžadujà uvnitÅ return, aby mohly vrátit hodnotu (stejnÄ jako bÄžná funkce).
NapÅÃklad takto:
let souÄet = (a, b) => { // složená závorka uvozuje vÃceÅádkovou funkci
let výsledek = a + b;
return výsledek; // když použÃváme složené závorky, musÃme výslovnÄ uvést âreturnâ
};
alert( souÄet(1, 2) ); // 3
Zde jsme chválili Å¡ipkové funkce pro jejich struÄnost, ale to jeÅ¡tÄ nenà vÅ¡echno!
Å ipkové funkce majà i jiné zajÃmavé vlastnosti.
Abychom je mohli prostudovat do hloubky, musÃme napÅed poznat nÄkteré dalšà prvky JavaScriptu. K Å¡ipkovým funkcÃm se tedy vrátÃme pozdÄji v kapitole Å ipkové funkce podruhé.
ProzatÃm už můžeme použÃvat Å¡ipkové funkce pro jednoÅádkové akce a callbacky.
ShrnutÃ
Å ipkové funkce se hodà pro jednoduché akce, zvláštÄ pro jednoÅádkové funkce. Dajà se napsat dvÄma způsoby:
- Bez složených závorek:
(...args) => výrazâ na pravé stranÄ je výraz: funkce jej vyhodnotà a vrátà jeho výsledek. Kulaté závorky můžeme vynechat, má-li funkce pouze jeden parametr, napÅ.n => n*2. - Se složenými závorkami:
(...args) => { tÄlo }â složené závorky nám umožÅujà uvést ve funkci vÃce pÅÃkazů, ale aby funkce nÄco vrátila, musÃme výslovnÄ uvéstreturn.
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â¦)