JavaScript’de function declaration, function expression ve hoisting nedir?

Merhaba yeni bir seriye başlamaya karar verdim. JavaScript ile ilgili kısa kısa notlar paylaşmayı planlıyorum. Yazılar çoğunlukla birbiriyle bağlantılı olacağı için sırasıyla okumanızı tavsiye ederim. Fazla lafı uzatmadan ufaktan başlayalım.

JavaScript’de birden çok şekilde fonksiyon tanımlayabilirsiniz. Yukarıdaki görselde bunlardan ikisini görebilirsiniz. Aşağı yukarı ikisi de aynı işi yapıyor diyebiliriz fakat birbirinden ayrıldıkları noktalar elbette var.

Geliştirmeye yeni başlayan birisi iki farklı fonksiyon tanımlama işlemini görünce hangisini kullanacağı konusunda doğal olarak kararsız kalıyor. Aralarındaki farkı anlayınca seçim yapmak daha da kolaylaşıyor.

Hoisting

Web tarayıcınızla herhangi bir siteye girdiğiniz anda JavaScript kodları otomatik olarak tarayıcı tarafından hoisting işlemine uğruyor. Peki o nedir?

Kısaca özetlemek gerekirse yukarıdaki görseldeki ilk örnek olan function declaration ile tanımlanmış olan tüm fonksiyonlar dosyanın neresinde yazılmış olurlarsa olsunlar sanki en üst satırdalarmış gibi muamele görüyorlar. Yani daha hiçbir kod satırı çalışmadan onlar tarayıcı tarafından en önce tanınıyorlar. Bu sayede bir fonksiyonu tanımlamadan önce çağırabiliyorsunuz.

Yukarıda geçerli olan kaide function expression dediğimiz fonksiyon tanımlamalarında geçerli olmuyor. Tarayıcı onlara karşı hoisting işlemi uygulamıyor. Yani bir fonksiyonu daha tanımlamadan önce çağıramıyorsunuz.

Peki hangisini kullanmalı? Buna tamamen siz karar verebilirsiniz. Eğer bir fonksiyonu tanımlamadan önce çağırmayı tercih ederseniz function declaration yapısını kullanabilirsiniz. Eğer bir fonksiyonu tanımlamadan önce çağırmak size göre değilse function expression yapısını kullanabilirsiniz. Sadece birini seçin ve ona bağlı kalın 🙂

Bir Yorum Yazın

%d blogcu bunu beğendi: