javaScript Anonim Fonksiyonlar
Anonim fonksiyonlar isim belirtmeksizin oluşturulabilen fonksiyonlardır. Çoğunlukla callback (geriçağırım fonksiyonu) olarak fonksiyon parametrelerinde kullanılırsa da kullanımı bununla sınırlı değildir.
Lambda nedir?
Bir Lambda, bir değişkene atanabilen veya başka bir fonksiyona argüman olarak geçirilebilen isimsiz bir fonksiyondur. python veya Ruby gibi diğer programlama dillerine aşina iseniz, isimsiz fonksiyonları çok iyi bileceksiniz.
Anonim fonksiyonlar
Anonim bir fonksiyon, sadece adı olmayan bir fonksiyondur.
Bir javaScript geliştiricisi olarak, normal bir fonksiyonun ne olduğunu ve nasıl tanımlandığını biliyor olmalısınız. Bunun gibi düzenli bir javaScript fonksiyonu oluşturabiliriz.
function Selam(){
//Kodlar...
}
Düzenli bir fonksiyon tanımladığınızda ona bir ad verirsiniz. Temel fark isminden de anlaşılacağı üzere Anonim fonksiyonlar olmasıdır, yani adı yoktur. Anonim fonksiyon nasıl tanımlanır:
function ($parametre1, $parametre2){
//Kodlar...
}
Anonim fonksiyonlar normal fonksiyonlara benzer, çünkü çağrıldığında çalıştırılan kod bloğunu içerirler. Ayrıca argümanları kabul edebilir ve değerleri döndürürler. Anonim fonksiyonları değişkene atayarak kullanılır.
$Selam = function ($parametre1, $parametre2){
//Kodlar...
}
Yukarıda ki tanım yapılmış örnek'de kod tamamen geçerli olsa da, çok kullanışlı değildir. Anonim fonksiyonun adı olmadığından kodunuzda başka bir yerde çalıştıramazsınız.
Bununla birlikte, isimsiz bir fonksiyon bir ifade veya bir dize gibi bir ifade olduğundan, onunla çeşitli kullanışlı kodlar yazabilirsiniz. Örnek olarak şunları yapabilirsiniz:
- Bir değişkene atayın, daha sonra değişkenin adını kullanarak çağırabilirsiniz. Tek bir dizide birçok farklı Anonim fonksiyon saklayabilirsiniz.
- Anonim fonksiyonu parametre olarak başka bir fonksiyona aktarabilirsiniz. Bu callback (bir geri arama olarak bilinir.)
- Dış fonksiyonun değişkenlerine erişebilmesi için onu dış fonksiyonun içinden
Return
edin. Bu bir closure(kapatma) fonksiyon olarak bilinir.
Bir dizinin içinde birkaç fonksiyon bile ekleyebilirsiniz, şunun gibi: 3 isimsiz fonksiyonu bir diziye ekleyin:
var dizi =[
function () {
console.log("Birinci fonksiyon");
},
function () {
console.log("İkinci fonksiyon");
},
function () {
console.log("Üçüncü fonksiyon");
}
];
dizi[2]();
Yukarıda örnekte görüldüğü üzere dizi[2]();
diziyi fonksiyon gibi çağırmalısınız.
Yukarıda ki örneği birde ES2015(ES6) arrow fonksiyonlarla yeniden düzenliyelim.
var dizi =[
() => console.log("Birinci fonksiyon"),
() => console.log("İkinci fonksiyon"),
() => console.log("Üçüncü fonksiyon"),
];
dizi[2]();
Anonim fonksiyonu callback (geri çağırma olarak kullanma)
Anonim fonksiyonu yaygın bir kullanımı, basit bir satır içi callback
fonksiyonu oluşturmaktır. callback (Geri çağırma) fonksiyonu, başka bir fonksiyona argüman olarak geçirebileceğiniz bir fonksiyondur. Geri çağırma fonksiyona eriştiğinizde, Çeşitli yapılacak işlemler gerektiğinde onu kullanabiliriz.
Birçok javaScript yerleşik fonksiyonu geri çağırmayı kabul eder veya geri çağırma fonksiyonu kabul eden kendi fonksiyonunuzu oluşturabilirsiniz.
Yerleşik fonksiyonlardan bazılarını görelim ve Anonim fonksiyonları anlayalım.
Fonksiyonun her elemanında callback
fonksiyonunu çalıştırmak için array_map()
fonksiyonunu kullanalım.
array_map()
fonksiyonu bir callback fonksiyonu ve bir diziyi argüman olarak kabul eder. Dizinin her elemanı boyunca yinelenir ve callback fonksiyonu her bir öğeye uygular. callback, dizi değerini değiştirecek bir değer döndürmesi ve array_map
'ın değiştirilen diziyi döndürmesi gerekir.
array_map()
, kendisine ilettiğiniz dizinin bir kopyası üzerinde çalışır. Orijinal diziye dokunulmadan kalır.Önce örneği Callback kullanmadan normal yoldan yapalım.
// callback fonksiyonu olmadan
var arr = [1,2,3,4,5];
var x = [];
for (var i of arr){
x.push(i*i);
}
console.log(x);
ÇIKTI:
Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
Aynı işlemi callback fonksiyonu ile array_map()
fonksiyonu kullanarak yapalım.
// Anonim fonksiyonu callback kullanma
let arr = [1,2,3,4,5];
var yeni_arr = arr.map(function(sayi){
return sayi * sayi;
});
console.log(yeni_arr);
console.log(arr);
ÇIKTI:
Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 ) Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
Kaynak