İş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?