JavaScript

JavaScript’te “higher-order function” Kullanımı

JavaScript’te bir “higher-order function” (üst düzey fonksiyon), başka bir fonksiyonu argüman olarak alan veya bir fonksiyonu sonuç olarak döndüren fonksiyondur.

Bu kavram, fonksiyonel programlamanın temel bir özelliğidir ve JavaScript gibi birinci sınıf fonksiyonları destekleyen dillerde yaygın olarak kullanılır.

Başka Bir Fonksiyonu Argüman Olarak Almak

Bir üst düzey fonksiyon, başka bir fonksiyonu parametre olarak alabilir. Bu genellikle geri çağırma fonksiyonları (callbacks) ile yapılır. Örneğin, Array.prototype.map, Array.prototype.filter, ve Array.prototype.reduce gibi yerleşik JavaScript fonksiyonları, her biri bir dizi üzerinde işlem yapmak için bir geri çağırma fonksiyonu alır. Örneğin:

Bir Fonksiyonu Sonuç Olarak Döndürmek

Bir üst düzey fonksiyon, başka bir fonksiyonu sonuç olarak döndürebilir. Genel olarak, kapsamı korumak, kısmi uygulama yapmak, veya “currying” gibi teknikler için kullanılır.

Kapsamı Koruma

Bir üst düzey fonksiyon, iç kapsamında tanımlanan değişkenlere erişimi olan başka bir fonksiyonu döndürebilir. Bu hem dış fonksiyonun değişkenlerinin yaşam süresini uzatır hem de iç fonksiyonun bu değişkenlere erişmesine olanak tanır. Örneğin:

Kısmi Uygulama

Kısmi uygulama, bir fonksiyonun bazı argümanlarını sabitleyip, geriye kalan argümanları alacak yeni bir fonksiyon döndürmek için kullanılır. Haliyle, fonksiyonun yeniden kullanılabilirliği artar ve kod tekrarı önlenir.

Currying

Currying, bir fonksiyonun birden fazla argümanını tek tek alan ve her seferinde yeni bir fonksiyon döndüren bir süreçtir. Örneğin:

Bu örnekte, multiply fonksiyonu, başka bir fonksiyon döndürür. Bu döndürülen fonksiyon, multiply‘nin aldığı ilk argümanı (a) kapsar ve başka bir argüman (b) alır. Sonuç olarak, multiplyByTwo ve multiplyByThree gibi yeni fonksiyonlar oluşturarak, multiply fonksiyonunun yeniden kullanılabilirliğini ve esnekliğini artırabiliriz.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu

😔 Reklam Engelleyicisi 😔

Sitenin varlığını sürdürebilmesi adına reklam engelleyicinizi (Adblocker) kapatmanızı rica ediyoruz 😔