⊗jsPmFTNFE 235 of 505 menu

Imenovani funkcijski izrazi v JavaScriptu

Recimo, da imamo takšen funkcijski izraz:

let test = function() { console.log('!'); }; test(); // izpiše '!'

Dajmo naši funkciji ime func:

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

Kot že veste, po tem imenu ni mogoče dostopati do funkcije:

let test = function func() { console.log('!'); }; test(); // izpiše '!' func(); // vrne napako

Zakaj pa potem dajati ime funkciji, če ne bo dostopno? Bistvo je v tem, da tega imena ne bo mogoče dostopati zunaj funkcije, vendar je dostopno znotraj te funkcije.

Preverimo:

let test = function func() { console.log(func); // funkcija bo izpisala svojo izvorno kodo }; test(); // kličemo funkcijo

Pokličimo našo funkcijo znotraj nje same:

let test = function func() { console.log('!'); // izpišemo '!' func(); // kličemo same sebe }; test();

Če zaženete to kodo, se bo v konzolo izpisovala neskončna količina izpisov v konzolo.

Pravzaprav je naša funkcija lahko poklicana znotraj sebe ne le kot func, temveč tudi kot test:

let test = function func() { console.log('!'); test(); // kličemo same sebe }; test();

V čem je razlika? Razlika je v tem, da je ime test le spremenljivka. V procesu delovanja skripta se lahko naša funkcija zapiše v drugo spremenljivko ali posreduje kot parameter - v tem primeru lahko povezava med spremenljivko test in funkcijo izgine.

Ime func je togo vezano na funkcijo specifično zato, da se lahko dostopimo do naše funkcije znotraj nje same.

Takšni Function Expression z imenom funkcije se imenujejo imenovani funkcijski izrazi.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni