Junior
Фарқи байни функсияи классикӣ ва функсияи тире дар JavaScript чист?
sobes.tech AI
Ҷавоб аз AI
Негізгі айырмашылық — олар this жұмысында.
Классикалық функция өзінің this қасиетіне ие, ол оның шақырылу контекстіне байланысты анықталады.
Стрелка функциясының өз this қасиеті жоқ. Ол лексикалық түрде анықталған ортаның this мәнін мұраға алады.
Басқа айырмашылықтар:
argumentsобъектісі: Классикалық функцияларargumentsобъектісіне қол жеткізе алады, ал стрелка функциялары — жоқ (бірақ rest-параметрлерді қолдануға болады).- Конструкторлар: Классикалық функциялар
newоператорымен конструктор ретінде қолданылуы мүмкін. Стрелка функциялары — жоқ. prototypeқасиеті: Классикалық функциялардыңprototypeқасиеті бар. Стрелка функцияларында жоқ.
this жұмысын көрсету мысалы:
// Классикалық функция мысалы
const obj = {
name: 'Объект',
greet: function() {
console.log(this.name); // this — объектке сілтеме
}
};
obj.greet(); // Нәтиже: Объект
const greetFunc = obj.greet;
greetFunc(); // Нәтиже: undefined (немесе браузерде Window) — this контекстін жоғалтады
// Стрелка функциясы мысалы
const objArrow = {
name: 'Объект стрелкамен',
greet: () => {
console.log(this.name); // this сыртқы контекстті мұраға алады (бұл жағдайда global немесе Window)
}
};
objArrow.greet(); // Нәтиже: undefined (немесе браузердегі терезе аты, егер ол анықталса)
const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Нәтиже: undefined (немесе браузердегі терезе аты) — this өзгермейді