javaScript Anında Çağrılan Fonksiyon "IFEE"

javaScrip'te IIFE fonksiyonların açılımı Immediately-invoked Function Expressions Anlamı anında Çağrılan fonksiyonlar anlamına gelir; yani tanımlandığı yerde çalışan bir javaScript fonksiyonudur.

javaScript'de IIFE, Anonim fonksiyonlardır; Bunları tanımlandığı yerde çalıştırmak için fonksiyon tanımını parantez içine alıp, yanına da fonksiyon çağrıları için kullandığımız " () " operatörünü yazmamız gerekir.

Bu şekilde çağırılan fonksiyonlar ilk fırsatta çalıştırılırlar.


(function () {
    // kodlar 
}());

Yada şöyle yazılır:


(function () {
    // kodlar 
})();

Yukarda ki iki tanımlamada geçerlidir. yukardaki örnek tanımlamadaki dış parantezleri kaldırırsanız Anonim fonksiyon olduğunu göreceksiniz.


function () {
    // kodlar 
}(); 

Yukardaki örnekte Anonim fonksiyon ve fonksiyonun çalışması için çağrı " ( ) " oparatörleri kullanılır.

IIFE'ler çok faydalıdır. çünkü küresel kapsamı kirletmiyorlar (misal bir kütüphanede ki değişken ismini sizde aynısını yazabilirsiniz bu durumda, proğram çakışmasını önlüyor.) ve değişken bildirimlerini izole etmenin basit bir yolu.

IIFE'lerin gerçekten iyi olduğu şeylerden biri, IIFE için bir fonksiyon kapsamı oluşturma yetenekleridir.

IIFE içinde bildirilen herhangi bir değişken dış dünya tarafından görülmez.

function test() {
    var ad = "Ahmet";

    console.log(ad);
}

test(); // Ahmet

// ReferenceError: ad is not defined
console.log(ad);

Argümanları IIFE'ye de kolayca aktarabileceğinizi belirtmekte fayda var.


var ad = "Ahmet";

(function (a) {
    
    console.log(a); //Ahmet
})(ad);

IIFE'lerde ES2015 ile gelen Arrow fonksiyonlarıylada tanımlanabilir:


(() => {
  /* */
})()

IFEE fonksiyonları mutlaka "( )" sarma işlemi yapın yoksa Uncaught SyntaxError hatası verecek

ÖRNEK:


(function () {

    alert("merhaba");

}());

fonksiyon anında çalışır ekrana "merhaba" mesajı verir.

IIFE'ler Parametre Alır


IIFE'ler çağrılırken de argüman alabilir. Bir örnek görelim.


(function IIFE(msg, times) {

    for (var i = 1; i <= times; i++) {

        console.log(msg);

    }

}("Merhaba!", 5)); // 5 kere Merhaba!

Bu gerçekten güçlü bir kalıp ve bunu sık sık jQuery kodunda ve diğer kütüphanelerde görüyoruz.


(function($, global, document) {

//jQuery için $, global için window

}(jQuery, window, document));

Unary operatörleri kullanarak alternatif sözdizimi


Bir IIFE oluşturmak için kullanabileceğiniz bazı garip sözdizimleri var, ancak gerçek dünyada çok nadiren kullanılıyor ve herhangi bir unary operatörünü kullanmaya dayanıyor. Bunları kullanmak için IFEE fonksiyonunda return ifadesi kullanılmazsa kullanılabilir.


!(function() {

  /* */

})()

 +(function() {

    /* */

  })()

~(function() {

  /* */

})()

-(function() {

  /* */

})()

Yukardaki özellik ES2015 gelen Arrow(ok) fonksiyonlarla çalışmaz.

Burada ilk karakter olan "!" , Burada yaptığı şey, bu fonksiyonu bir fonksiyon ifadesi tanımı yerine bir ifadeye dönüştürmektir. Sonra hemen bu fonksiyonu çalıştırmak.

Bu konuda bir başka kısa varyasyon aşağıda gösterilmiştir:


void function() {

    alert("merhaba IIFE foksiyon!");

}();

Return Değeri Alan IIFE'ler


Bir IIFE'den bir Return değerine ihtiyacınız yoksa, her zaman olduğu gibi unary operatörleri ile gördüğümüz ilk stilistik IIFE varyasyonunu kullanabilirsiniz ! , + , void vb.

Ancak IIFE'lerin gerçekten önemli ve güçlü bir özelliği de değişkene atanabilecek bir değer verebilmeleridir.

var result = (function() {

    return "Merhaba javaScript";
    
}());

alert(result); // Merhaba javaScript

İsimli IIFE

Bir IIFE ayrıca normal fonksiyonlar olarak adlandırılabilir (ok fonksiyonları değil). Bu, fonksiyonun küresel kapsama "sızdırmadığı" gerçeğini değiştirmez ve yürütüldükten sonra tekrar başlatılamaz:


(function doSomething() {

  /* */

})()

Noktalı virgülle başlayan IIFE'ler


Bu özellik iki javascript dosyasını birleştirdiğinizde sorun çıkmaması için kullanılır.


;(function() {

  /* */
  
})()

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

8761

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML FORM OLUŞTURMA
  • CSS YATAY MENÜ YAPIMI
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.