⊗jsPmFTFENIn 233 of 505 menu

A funkcionális kifejezések árnyalatai a JavaScriptben

A Function Expression elnevezés nem véletlenül kapta ezt a nevet. Valóban azt jelenti, hogy az ilyen függvények részei valamilyen kifejezésnek.

Például összeadhatunk egy stringet és egy névtelen függvényt:

let str = 'str' + function() {return 3;}; console.log(str); // kiírja: 'strfunction() {return 3;}'

Miért látunk ilyen furcsa eredményt, és nem a 3 számot? Mert a második tag nem a függvény működésének eredménye, hanem annak forráskódja (hiszen mi nem hívtuk meg a függvényt, csak egyszerűen leírtuk).

Tehát a funkcionális kifejezés elnevezés azt jelenti, hogy egy ilyen függvény részt vesz valamilyen kifejezésben.

A változóhoz való hozzárendelés is kifejezés:

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

Lehetőség van például arra is, hogy egy függvényt paraméterként adjunk át a console.log-nak, és az kiírja annak forráskódját a konzolra - ez szintén kifejezésnek számít:

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

Miért fontos ez: mert a Function Declaration és a Function Expression közötti különbség egyáltalán nem az, hogy az első függvény névvel jön létre, míg a második eredetileg név nélküli. Ez nem így van.

Példa. Itt van egy függvényünk név nélkül, de közben nem vesz részt semmilyen kifejezésben (azaz nem hajtunk végre vele semmilyen műveletet, egyszerűen szólva):

/* Ez a függvény Function Declaration lesz, de szintaktikai hibával: */ function() { console.log('!'); }

Egy ilyen kód egyáltalán hibát fog adni! Miért: mivel a függvény nem vesz részt semmilyen kifejezésben, a böngésző Function Declaration-nek tekinti, de nem találja a nevét, és hibát jelez.

Ahhoz, hogy a hiba eltűnjön, azt kell tennünk, hogy a függvényt valamilyen kifejezés részévé tesszük. Például írjunk elé egy + műveletet:

+function() { // egy ilyen kód helyes console.log('!'); };

Hogyan működik ez: maga a + művelet önmagában nem csinál semmit, ez olyan, mintha a 3 szám helyett a +3 számot írnánk - megengedett, de semmit sem változtat.

De függvény esetében - változtat. Most már a mi függvényünk nem csak le van írva, hanem részt vesz egy kifejezésben. Ezért most már nem lesz hiba. A függvény végrehajtásának eredménye sem lesz, hiszen csak leírtuk, de nem hívtuk meg.

A + helyett bármit írhatunk. Például:

-function() { // egy ilyen kód helyes console.log('!'); }; !function() { // egy ilyen kód helyes console.log('!'); };

A függvényünket zárójelek közé is helyezhetjük, ebben az esetben az szintén funkcionális kifejezéssé válik:

(function() { // egy ilyen kód helyes console.log('!'); });

Határozza meg, hogy az bemutatott függvény Function Declaration vagy Function Expression:

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

Határozza meg, hogy az bemutatott függvény Function Declaration vagy Function Expression:

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

Határozza meg, hogy az bemutatott függvény Function Declaration vagy Function Expression:

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

Határozza meg, hogy az bemutatott függvény Function Declaration vagy Function Expression:

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

Határozza meg, hogy az bemutatott függvény Function Declaration vagy Function Expression:

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

Határozza meg, hogy az bemutatott függvény Function Declaration vagy Function Expression:

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

Határozza meg, hogy az bemutatott függvény Function Declaration vagy Function Expression:

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

Határozza meg, hogy az bemutatott függvény Function Declaration vagy Function Expression:

console.log( function() { console.log('!'); } );
Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás