Что такое стрелочные функции и чем они отличаются от обычных функций?
Этот вопрос проверяет знание синтаксиса стрелочных функций в JavaScript, их особенностей и ключевых отличий от традиционных функций, таких как поведение контекста this.
Короткий ответ
Стрелочные функции — это сокращенная запись функций, которая не имеет своего контекста this. Они чаще всего используются для упрощения синтаксиса и не поддерживают некоторые особенности обычных функций, например, arguments и this. Эти функции удобны для написания короткого кода, но их нельзя использовать в ситуациях, где важен контекст.
Длинный ответ
Стрелочные функции — это сокращенный синтаксис для создания функций, введенный в ES6 (ECMAScript 2015).
Основная особенность стрелочных функций заключается в том, что они не имеют собственного контекста this — они берут его из внешней области видимости, что делает их полезными в некоторых ситуациях, например, при работе с колбэками.
Пример стрелочной функции:
const add = (a, b) => a + b;
console.log(add(2, 3)); // 5Основные отличия стрелочных функций от обычных:
- Контекст
this: Стрелочные функции не имеют собственногоthisи захватывают его из окружающей области. - Синтаксис: Они короче и удобнее для однострочных выражений.
- Отсутствие
arguments: Стрелочные функции не имеют объектаarguments, поэтому нужно использоватьrest-параметры для получения списка аргументов. - Нельзя использовать как конструктор: Стрелочные функции нельзя использовать с ключевым словом
new.
Пример с контекстом:
function Person() {
this.age = 0;
setInterval(() => {
this.age++; // 'this' берется из внешней функции
console.log(this.age);
}, 1000);
}
const p = new Person();