⊗jsPmFTFENIn 233 of 505 menu

Nuance funkčních výrazů v JavaScriptu

Název Function Expression není dán jen tak. Skutečně znamená to, že takové funkce jsou součástí nějakého výrazu.

Například můžeme sečíst nějaký řetězec a bezejmennou funkci:

let str = 'str' + function() {return 3;}; console.log(str); // vypíše 'strfunction() {return 3;}'

Proč vidíme takový podivný výsledek, a ne číslo 3? Protože druhý sčítanec - to není výsledek práce funkce, ale její zdrojový kód (vždyť jsme tuto funkci nevolali, ale jednoduše napsali).

To znamená, že název funkční výraz označuje to, že taková funkce se účastní nějakého výrazu.

Přiřazení k proměnné je také výraz:

let func = function() { console.log('!'); };

Lze také, například, předat funkci jako parametr do console.log a ten vypíše její zdrojový kód do konzole - to se také bude považovat za výraz:

console.log(function() {return 3;});

Proč je to důležité: protože rozdíl Function Declaration a Function Expression není vůbec v tom, že první funkce je vytvořena s jménem, a druhá zpočátku jméno nemá. To není pravda.

Příklad. Zde máme funkci bez jména, ale přitom se neúčastní žádného výrazu (to znamená, že s ní neprovádíme žádné akce, řečeno jednoduše):

/* Tato funkce bude Function Declaration, ale se syntaktickou chybou: */ function() { console.log('!'); }

Takový kód obecně vydá chybu! Proč: protože funkce se neúčastní žádného výrazu, takže prohlížeč ji považuje za Function Declaration, ale nenajde její jméno a vydá chybu.

Aby chyba zmizela, je třeba donutit funkci stát se součástí nějakého výrazu. Například, napíšeme před ní operaci +:

+function() { // takový kód je korektní console.log('!'); };

Jak to funguje: samotná operace + nic nedělá, je to stejné jako napsat místo čísla 3 číslo +3 - přípustné, ale nic nemění.

Ale v případě funkce - mění. Nyní naše funkce už není jen napsána, ale účastní se výrazu. Proto chyba nyní nebude. Výsledku provedení funkce také nebude, vždyť jsme ji jednoduše napsali, ale nevolali.

Místo + lze napsat cokoliv. Například:

-function() { // takový kód je korektní console.log('!'); }; !function() { // takový kód je korektní console.log('!'); };

Lze také vzít naši funkci do kulatých závorek, v tomto případě se také stane funkčním výrazem:

(function() { // takový kód je korektní console.log('!'); });

Určete, zda je předložená funkce Function Declaration nebo Function Expression:

function func() { console.log('!'); }

Určete, zda je předložená funkce Function Declaration nebo Function Expression:

let func = function() { console.log('!'); }

Určete, zda je předložená funkce Function Declaration nebo Function Expression:

+function() { console.log('!'); }

Určete, zda je předložená funkce Function Declaration nebo Function Expression:

!function func() { console.log('!'); }

Určete, zda je předložená funkce Function Declaration nebo Function Expression:

-function func() { console.log('!'); }

Určete, zda je předložená funkce Function Declaration nebo Function Expression:

1 + function func() { console.log('!'); }

Určete, zda je předložená funkce Function Declaration nebo Function Expression:

(function func() { console.log('!'); })

Určete, zda je předložená funkce Function Declaration nebo Function Expression:

console.log( function() { console.log('!'); } );
Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout