Bu sayfayı yazdır
Cuma, 24 Mayıs 2013 00:26

Nedir bu IIFE (Immediately-Invoked Function Expression)

Yazan 
Öğeyi Oyla
(1 Oyla)
Bir çok yerde görmüş olduğum bir kod yapısını incelemeye başladığımda bunun aslında IIFE (Immediately-Invoked Function Expression) olarak adlandırıldığını gördüm. Türkçe olarak anlık çağrılan fonksiyon ifadesi olarak adlandırabileceğimiz bu kod yapısı aşağıdaki iki şekildedir.
(function(){
  // Kodlarımız buraya yazılıyor.
}());
//Veya aşağıdaki şekilde ilk parantez fonksiyon bloğunun sonunda
(function(){
  // Kodlarımız buraya yazılıyor.
})();
Şimdi bu kodun iç kısmını yani parantezsiz kısmını göz önüne alırsak bildiğimiz isimsiz fonksiyon olduğunu görebiliriz. Böyle fonksiyonları aşağıdaki şekilde atama yaparak kullanabliriz.
var uyari=function(message) { alert(message);  };
var mesaj="Merhaba Dünya";
uyari(mesaj);

Bu şekilde uyari adindaki fonksiyon değişkenini parametre olarak başka fonksiyonlara gönderip kullanmamız bile mümkün. Fakat isimsiz fonksiyonu hiçbir değişkene atamadan yazdığmızda Javascript hata verecektir. Çünkü fonksiyon tanımlaması için bir isim gerekiyor fakat isimsiz fonksiyonumuzda bu yok. Tam bu noktada IIFE yapısını kullanarak bu fonksiyonun bir defaya mahsus çalışmasını sağlayabiliriz. Zaten IIFE yapısının kullanım amaçlarından biriside bir defaya mahsus çalışması gereken kodların javascript'in global değişken listesine hiç bulaşmadan kendi bloğunda kodlarımızın çalışması içindir. Böylelikle yerel değişkenler kullanıldığı için kod optimize olup bir miktar performans artışı sağlar.

Fonksiyona global değerlerden parametre aktarımınıda aşağıdaki şekilde yapabiliriz.
(function(w){
   w.alert("Bir defaya mahsus işlemler yapılabilir");
}(window));

Dikkat edilirse burada window parametresi fonksiyonun w değişkenine aktarıldı. Bu şekilde global değerleri fonksiyonumuza gönderebiliriz. Bir çok javascript kütüphaneleri $ değişkenin fonksiyon kısaltması olarak kullanıyor. Bunların bir birlerini etkilememesi için çoğunlukla aşağıdaki yapı kullanılıyor.

(function($){
$("body").append("<p>Şimdi $ değişken jquery için kullanılıyor.</p>");
}(jQuery));

Okunma 5886 defa Son Düzenlenme Cuma, 07 Haziran 2013 04:01
Ufuk Yıldırım

Yazılım Geliştirme Uzmanı

Web site: www.ufuk.biz

Son Ekledikleri: Ufuk Yıldırım

Benzer Öğeler (etikete göre)