Именована функциона израза у 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 са именом функције се зову именована функциона израза.