İşlev ifadeleri

İşlev ifadeleri, işlevlerdir bir ifadenin beklendiği yerlerde oluşturulur. Proje yönetimi kariyerinizde yaygın olarak ifadeleri bir değişkene atanan değerler olarak ifade eder. Bir fonksiyon tanımı olsa da her zaman bir ad gerektirir. Anonim kullanıcı oluşturmak için tanımlayıcıyı atlayarak ve function anahtar kelimesini bir isteğe bağlı parametreler içeren parantez çifti:

const myVariable = function() { };

Ardından bu kişileri telefon edebilirsiniz fonksiyon ifadelerinin bir örneğidir:

const myVariable = function() {
    console.log( "This is my function." );
};

myVariable();
> "This is my function."

Söz dizimi kullanarak adlandırılmış işlevler oluşturmak için işlev ifadelerini de kullanabilirsiniz. işlev bildirimlerine benzer:

const myVariable = function myFunction() {
    console.log( "This is my function." );
};

myVariable();
> "This is my function."

Ancak işlev bildirimlerinden farklı olarak adlandırılmış işlev ifadesi yalnızca işlevin kendi içinden işlev adıyla erişilebilir:

const myVariable = function myFunction() {
  console.log( `I'm a ${ typeof myFunction }.`);
};

typeof myFunction;
> "undefined"

typeof myVariable;
> "function"

myVariable();
> "I'm a function."

İşlev ifadeleriyle ilişkili adlar, öncelikle hata ayıklama için yararlıdır. CEVAP adlandırılmış işlev ifadesi kendini yinelemeli olarak da çağırabilir. Ancak, bu bir yaygın kullanım örneğidir:

const myVariable = function myFunction() {
    console.log( "One second elapsed." );
    setTimeout( myFunction, 1000 );
};

setTimeout( myVariable, 1000 );
> "One second elapsed."
> "One second elapsed."
> "One second elapsed."

Ok işlev ifadeleri

Ok işlevi ifadeleri (genellikle "ok işlevleri" veya nadiren "lambda" olarak adlandırılır) işlevleri") oluşturmak için kısa bir söz dizimi sağlamak amacıyla ES6'da kullanıma sunuldu. benzersiz davranışlara sahip anonim işlev ifadeleri.

Bir ifadenin beklendiği her yerde bir ok işlevi oluşturabilirsiniz. kullanabilirsiniz. Ok işlevi, en yaygın biçiminde sıfır veya daha fazla parametre içeren eşleşen bir parantez çiftinden, tek bir eşittir işareti ve büyüktür karakterinden (=>) oluşan bir oktan ve işlev gövdesini içeren eşleşen bir çift köşeli parantezden oluşur:

const myFunction = () => {};

Belirli koşullar altında söz dizimi daha da kompakt hale getirilebilir. Eğer tek bir parametre kullanıyorsanız başlangıç parantezlerini çıkarabilirsiniz:

const myFunction = myParameter => {};

İşlev gövdesinin tek bir ifadenin değerini döndürmesini istediğinizde, ne işlev gövdesini küme parantezleri içine almamalı ne de return anahtar kelimesi gereklidir:

const myFunction = () => 2 + 2

myFunction()
> 4

Ok işlevleri, arguments veya this değerleri için kendi bağlamlarına sahip olmamaları açısından benzersizdir. Bunun yerine, ok işlevinin sözcük açısından sarmalayan ortam, işlevini yerine getiren işlevi görür.

function myParentFunction() {
    this.myProperty = true;
    let myFunction = () => {
            console.log( this );
    }
    myFunction();
};

let myInstance = new myParentFunction();
> Object { myProperty: true }

Arama ok işlevleri

Ok işlevleri, bağımsız değişkenleri diğer işlev türleri hakkında bilgi edinin. Bir ok işlevinin gövdesindeki arguments nesnesi, değerini şuradan devralır: en yakın sözcüksel olarak sınırlayan ortam:

function myFunction() {
    let myArrowFunction = () => {
            console.log( arguments[ 0 ] );
    }
    myArrowFunction( true );
};

myFunction( false );
> false

Bu örnekte, false bağımsız değişkeniyle çağrılan bir dış işlev, true bağımsız değişkeniyle iç ok işlevi. Çünkü arguments nesnesi içindeki bağlantı, dış işlevdeki bağlamaya dönüşür, iç işlev, dış işlevin false değerini günlüğe kaydeder.

Üst bağlamdan devralınacak bir arguments nesnesi yoksa ok işlevinin arguments nesnesi tanımlanmaz ve ona erişmeye çalışmak hataya neden olur:

let myArrowFunction = () => {
    console.log(arguments);
};
myArrowFunction( true );
> Uncaught ReferenceError: arguments is not defined

Hemen Çağırılan İşlev İfadeleri (IIFE)

Hemen Çağırılan İşlev İfadesi (IIFE), bazen "ve kendi kendine çalışan anonim işlev" , bir açıklamadır. IIFE, IIFE tarafından oluşturulan işlevi bir gruplandırma operatörü içine yerleştirin. İkinci bir eşlenmiş parantez çifti, ardından işlevi hemen çağırır işlev tanımının kendisini izleyerek veya gruplandırmayı hemen takip ederek operatörümüzü kullanabilirsiniz. Standart bir işlev kullanıyorsanız bu iki yaklaşım arasında pratik bir fark yoktur:

(function() {
    console.log( "IIFE.")
    }
)();
> "IIFE."

(function() {
    console.log( "IIFE.")
    }
());
> "IIFE."

İlk örnek, gruplandırılmış işlev ifadesini çağırır. İkinci örnekte, gruplandırma operatörleri içinde bir işlev beyanı çağrılır ve nihai sonuç gruplandırılmış bir ifade olarak değerlendirilir. Sonuç ikisinde de aynıdır: dava açın.

Ancak, IIFE'nizin ok işlevi olması arasında bir fark vardır. Burada işlevi çağırmak için kullanılan parantezler gruplandırma dışında olmalıdır operatörleri içerir. Çünkü ok işlevi kendi başına bir ifade değildir, ancak bir bağlamda oluşturulması gerekir. Ok işlevini gruplandırma operatörlerinin kapsamı içinden çağırmaya çalışmak, henüz bir ifade bağlamında oluşturulmamış bir ok işlevi çağırmaya çalışmak anlamına gelir:

( () => {
    console.log( "IIFE." );
}() );
> Uncaught SyntaxError: missing ) in parenthetical

Gruplandırma operatörleri bir ifade beklediğinden, içlerindeki ok işlevi tanımlanır. Bu sayede, onları izleyen parantezler gruplandırılmış ifadeyi çağırır:

( () => {
    console.log( "IIFE." );
} )();
> "IIFE."

Eski uygulamalar, özellikle küresel kapsamı işlev kapsamlı değişkenler ve işlev bildirimleriyle kirletmemek için kapsamı yönetmek amacıyla sık sık IIFE'leri kullanırdı. ES6'ta blok kapsamı özelliği kullanılmadan önce, genel kapsamın yanlışlıkla kirlenmesini önlemek için komut dosyasının tamamının bir IIFE içine sarmalanması yaygın bir uygulamaydı.

Öğrendiklerinizi sınayın

Bir adlandırılmış işlev ifadesini işlevi nedir?

Hayır
Evet