Этот вопрос проверяет знание синтаксиса стрелочных функций в 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();