⊗jsPmFTNFE 235 of 505 menu

Именовани функционални изрази в JavaScript

Да предположим, че имаме следния функционален израз:

let test = function() { console.log('!'); }; test(); // ще изведе '!'

Нека дадем име func на нашата функция:

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

Както вече знаете, не може да се достъпи до функцията по това име:

let test = function func() { console.log('!'); }; test(); // ще изведе '!' func(); // ще даде грешка

Тогава защо да даваме име на функция, ако то няма да бъде достъпно? Работата е там, че това име ще бъде недостъпно отвън на функцията, но достъпно вътре в самата функция.

Нека проверим:

let test = function func() { console.log(func); // функцията ще изведе собствения си изходен код }; test(); // извикваме функцията

Нека извикаме нашата функция вътре в самата нея:

let test = function func() { console.log('!'); // извеждаме '!' func(); // извикваме себе си }; test();

Ако стартирате този код, в конзолата ще се извежда безкрайно много съобщения.

Всъщност нашата функция може да бъде извикана вътре в себе си не само като func, но и като test:

let test = function func() { console.log('!'); test(); // извикваме себе си }; test();

Каква е разликата? Разликата е в това, че името test е просто променлива. В процеса на работа на скрипта нашата функция може да се запише в друга променлива или да се предаде като параметър - в този случай връзката между променливата test и функцията може да се загуби.

Името func е строго свързано с функцията специално за да може да се достъпи до нашата функция вътре в самата нея.

Такива Function Expression с име на функция се наричат именовани функционални изрази.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне