Когда используют именованные функциональные выражения в JavaScript?

Готовлюсь к экзаменам в универе, этот вопрос есть в билете, буду очень признателен если кто то поможет дать достаточно широкий и исчерпывающий ответ на этот вопрос, было бы круто если бы с примером)

Используют их когда нужно функцию передавать в переменные, или другие места в коде, внутреннее имя это самый надежный способ обращения функции к самой себе, где бы она не была, то есть по внутреннему имени вы всегда обратитесь к функции, когда внешнее не так надежно, и можно во многих случаях заменить. Вот пример:

var times=0;

function
sayHello(hello) {
if (times<5) {
console.
log(hello);
times ;
sayHello(hello);
}
}
;
var
fiveTimes = sayHello
fiveTimes('hi');

sayHello = null;

times=0;

fiveTimes('hello');

В этом примрее мы задаем значение имени функции null, и как видим далее функция не работает, ошибка во время выполнение, первое hello, всё таки вывело в консоль.

А если переписать вот так, то будет нормально:

var times=0;

var
fiveTimes = function sayHello(hello) {
if (times<5) {
console.
log(hello);
times ;
sayHello(hello);
}
}
;

fiveTimes('hi');

var
funcHello = fiveTimes

fiveTimes
= null;

times=0;

funcHello('hello');

Тут мы изменяем внешнее имя и присваиваем ему null, и тут всё срабатывает как надо, надежно, при любых условиях.