Проверяет понимание разницы между Function Declaration и Function Expression, а также знание именованных функциональных выражений (NFE) и их практического применения.
Function Expression — это способ создания функции, при котором функция присваивается переменной или передаётся как значение. В отличие от Function Declaration, такое выражение не поднимается (hoisting) целиком и создаётся в момент выполнения. Именованное функциональное выражение (NFE) — это Function Expression, у которого есть собственное имя.
Имя функции в NFE доступно только внутри её собственного тела. Во внешней области видимости это имя не существует, что важно для избежания конфликтов и утечек в глобальную область.
const factorial = function fact(n) {
return n <= 1 ? 1 : n * fact(n - 1);
};
console.log(factorial(5)); // 120
console.log(typeof fact); // "undefined" — имя недоступно снаружи
let countdown = function tick(n) {
if (n === 0) return;
console.log(n);
tick(n - 1); // работает даже если countdown переприсвоить
};
const original = countdown;
countdown = null;
original(3); // 3, 2, 1 — рекурсия продолжает работать
Если бы функция была анонимной и вызывала себя через внешнюю переменную, после переприсваивания переменной рекурсия сломалась бы. Именно внутреннее имя делает функцию устойчивой к таким изменениям.
Именованные функциональные выражения стоит применять там, где нужна рекурсия, важна читаемость стека вызовов при отладке или требуется изолировать имя функции от внешней области видимости.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию