Junior — Middle
65
В чем различия между стрелочными функциями и стандартными функциями в JavaScript в плане синтаксиса и поведения?
Ответ от нейросети
sobes.tech AI
Стрелочные функции (arrow functions) в JavaScript отличаются от стандартных функций по синтаксису и поведению:
- Синтаксис:
- Стрелочные функции короче, не требуют ключевого слова
functionи могут иметь неявный возврат значения.
- Стрелочные функции короче, не требуют ключевого слова
// Стандартная функция
function sum(a, b) {
return a + b;
}
// Стрелочная функция
const sum = (a, b) => a + b;
- Контекст
this:- В стрелочных функциях
thisлексически привязан к контексту, в котором функция была объявлена. - В стандартных функциях
thisзависит от того, как функция вызвана.
- В стрелочных функциях
const obj = {
value: 10,
method: function() {
setTimeout(function() {
console.log(this.value); // undefined, т.к. this указывает на глобальный объект
}, 100);
},
arrowMethod: function() {
setTimeout(() => {
console.log(this.value); // 10, т.к. стрелочная функция берет this из метода
}, 100);
}
};
-
Отсутствие
arguments:- Стрелочные функции не имеют собственного объекта
arguments.
- Стрелочные функции не имеют собственного объекта
-
Нельзя использовать как конструкторы:
- Стрелочные функции нельзя вызвать с
new.
- Стрелочные функции нельзя вызвать с
Таким образом, стрелочные функции удобны для коротких функций и сохранения контекста this, а стандартные функции лучше подходят, когда нужен динамический this или конструктор.