Junior
JavaScript'te klasik fonksiyon ile ok fonksiyonu arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Temel fark, this ile nasıl çalıştıklarıdır.
Klasik bir fonksiyonun kendi this nesnesi vardır ve bu, çağrıldığı bağlam tarafından belirlenir (nasıl çağrıldığına bağlıdır).
Ok fonksiyonunun ise kendi this nesnesi yoktur. O, tanımlandığı ortamdan this lexical olarak miras alır.
Diğer farklar:
argumentsnesnesi: Klasik fonksiyonlarargumentsnesnesine erişebilir, ok fonksiyonları ise erişemez (ama rest parametreleri kullanabilirler).- Yapıcılar: Klasik fonksiyonlar
newoperatörü ile yapıcı olarak kullanılabilir. Ok fonksiyonları kullanılamaz. prototypeözelliği: Klasik fonksiyonlarınprototypeözelliği vardır. Ok fonksiyonlarının yoktur.
this ile çalışma örneği:
// Klasik fonksiyon örneği
const obj = {
name: 'Nesne',
greet: function() {
console.log(this.name); // this, obj'e referans verir
}
};
obj.greet(); // Çıktı: Nesne
const greetFunc = obj.greet;
greetFunc(); // Çıktı: undefined (veya tarayıcıda Window) - this, bağlamını kaybeder
// Ok fonksiyonu örneği
const objArrow = {
name: 'Ok ile nesne',
greet: () => {
console.log(this.name); // this, dış bağlamı miras alır (bu durumda global veya Window)
}
};
objArrow.greet(); // Çıktı: undefined (veya tarayıcıda pencere adı, eğer name global olarak tanımlıysa)
const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Çıktı: undefined (veya tarayıcıda pencere adı) - this değişmez