Проверяет понимание области видимости и hoisting стрелочных функций в JavaScript, а также их отличие от обычных функций.
В JavaScript существует механизм hoisting (поднятие), который перемещает объявления переменных и функций в начало их области видимости. Однако для стрелочных функций, объявленных через const или let, hoisting работает иначе: они не инициализируются до момента выполнения строки с объявлением. До этого момента переменная находится во временной мёртвой зоне (Temporal Dead Zone, TDZ).
function MyComponent() {
// Ошибка: Cannot access 'handleClick' before initialization
handleClick();
const handleClick = () => {
console.log('Clicked');
};
return <div>Hello</div>;
}В этом примере вызов handleClick() происходит до того, как переменная handleClick была инициализирована. JavaScript видит объявление const handleClick, но не позволяет обратиться к ней до завершения инициализации. В результате возникает ReferenceError.
Обычные функции, объявленные через function declaration, полностью поднимаются (hoist) вместе с телом. Их можно вызывать до строки объявления:
function MyComponent() {
handleClick(); // Работает без ошибок
function handleClick() {
console.log('Clicked');
}
return <div>Hello</div>;
}В функциональных компонентах React стрелочные функции удобны для обработчиков событий, но их нужно объявлять до использования. Если требуется вызывать функцию до её объявления, используйте обычную функцию. В остальных случаях стрелочные функции предпочтительнее из-за лексического this и краткого синтаксиса.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию