Junior
Koja je razlika između dva načina definisanja funkcije?
sobes.tech АИ
Одговор од АИ
Главна разлика је у контексту this.
| Начин дефинисања функције | Разлика |
|---|---|
дефинисање функције |
Контекст this се одређује према начину на који је функција позвана. Подиже се пре извршавања кода (hoisting). |
стрелачка функција |
Контекст this наследи се из околног (лексичког) контекста. Не подиже се (без hoisting). |
// дефинисање функције
function обичнаФункција() {
console.log(this); // `this` зависи од позива
}
// стрелачка функција
const стрелачкаФункција = () => {
console.log(this); // `this` наследи из контекста у коме је дефинисана
};
Стрелачке функције немају свој објекат arguments (узима се из спољашњег контекста) и не могу се користити као конструктори са оператором new.