Junior
JavaScript-də klassik funksiya ilə ox funksiyası arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Əsas fərq onların this ilə işləmə tərzindədir.
Klassik funksiya öz this-ə malikdir və bu, çağırılma kontekstindən asılıdır (nə zaman çağırılıb).
Ok funksiyası isə öz this-ə malik deyil. O, leksik olaraq, this mühitindən irsən alır.
Digər fərqlər:
argumentsobyekti: Klassik funksiyalararguments-ə çıxışa malikdir, ok funksiyalar isə — yox (amma rest parametrlərdən istifadə etmək olar).- Konstruktorlar: Klassik funksiyalar
newoperatoru ilə konstruktor kimi istifadə oluna bilər. Ok funksiyaları — yox. prototypexüsusiyyəti: Klassik funksiyalarınprototypexüsusiyyəti var. Ok funksiyalarında — yox.
this ilə işləmə nümunəsi:
// Klassik funksiya nümunəsi
const obj = {
name: 'Obyekt',
greet: function() {
console.log(this.name); // this, obj-ə istinad edir
}
};
obj.greet(); // Çıxış: Obyekt
const greetFunc = obj.greet;
greetFunc(); // Çıxış: undefined (və ya Browserdə Window) - this, konteksti itirir
// Ok funksiyası nümunəsi
const objArrow = {
name: 'Ok ilə obyekt',
greet: () => {
console.log(this.name); // this, xarici kontekstdən irsən alır (bu halda qlobal və ya Window)
}
};
objArrow.greet(); // Çıxış: undefined (və ya brauzer pəncərəsinin adı, əgər name qlobal olaraq təyin olunubsa)
const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Çıxış: undefined (və ya brauzer pəncərəsinin adı) - this dəyişmir