JavaScript Sınıfları Hoist Edilmez

Hamdi Yılmaz
1 min readMar 20, 2023

JavaScript sınıfları, diğer programlama dillerinde olduğu gibi, kodda nesne tabanlı programlama yapmanıza olanak tanıyan özel bir yapıdır. Ancak, sınıfların JavaScript’teki hoist etme davranışı, bazı geliştiricileri yanıltabilir. Bu yazıda, “Classes are not hoisted” (Sınıflar hoist edilmez) kavramını açıklayacağız.

Öncelikle, hoist etme kavramını anlamak önemlidir. Hoist etme, JavaScript’te bir değişkenin veya fonksiyonun tanımlanmasının bir dosyanın başlangıcına taşındığı anlamına gelir. Bu, bir değişkenin ya da fonksiyonun, kullanılmadan önce bile tanımlanabileceği anlamına gelir.

Ancak, JavaScript sınıfları bu davranışı göstermez. Sınıflar, tanımlandığı yerde kalırlar ve bir dosyanın başına taşınmazlar. Bu, sınıfın kullanılmadan önce tanımlanması gerektiği anlamına gelir. Aksi takdirde, kodunuz hata verebilir.

Aşağıdaki örnek, sınıfların hoist edilmediğini gösterir:

let myAnimal = new Animal("Dog"); // Error: Animal is not defined

class Animal {
constructor(name) {
this.name = name;
}
}

Burada, bir Animal sınıfı tanımlanır ve sınıfın örneği myAnimal oluşturulur. Ancak, sınıfın tanımı, myAnimal örneği oluşturulmadan önce gelir. Bu nedenle, JavaScript motoru, “Animal is not defined” şeklinde bir hataya neden olur.

Bu hatayı önlemek için, sınıfların tanımını dosyanın en üst kısmına taşımak en iyi çözümdür. Böylece, sınıfın tanımı, diğer kodlarla birlikte dosya yüklendiğinde hemen kullanılabilir hale gelir.

Sonuç olarak, sınıfların hoist edilmemesi, diğer değişkenler ve fonksiyonlar gibi davranmadıkları anlamına gelir. Sınıfların, kullanılmadan önce tanımlanması gerektiği için, kodunuzu bu konuda dikkatli olmanız önemlidir.

--

--