Back to questions
Middle+
3
Чем отличается стрелочная функция от функции, объявленной через function?
Companies where asked
Ifellow
Answer from AI
sobes.tech AI
Стрелочные функции в JavaScript (и Node.js) отличаются от обычных функций, объявленных через function, несколькими ключевыми моментами:
-
Лексическое связывание
this- В стрелочных функциях
thisберется из внешнего контекста, где функция объявлена. - В обычных функциях
thisзависит от способа вызова.
- В стрелочных функциях
-
Отсутствие собственного объекта
arguments- В стрелочных функциях нет собственного
arguments, нужно использовать параметры или rest-параметры.
- В стрелочных функциях нет собственного
-
Нельзя использовать как конструктор
- Стрелочные функции не могут быть вызваны с
new.
- Стрелочные функции не могут быть вызваны с
-
Отсутствие
prototype- У стрелочных функций нет свойства
prototype.
- У стрелочных функций нет свойства
Пример:
const obj = {
value: 42,
regularFunc: function() { console.log(this.value); },
arrowFunc: () => { console.log(this.value); }
};
obj.regularFunc(); // 42, this указывает на obj
obj.arrowFunc(); // undefined или значение из внешнего контекста
Таким образом, стрелочные функции удобны для сохранения контекста this, например, в коллбэках, а обычные функции — когда нужен динамический this или возможность использовать конструктор.