JavaScript Dersleri

JavaScript’te Higher Order Functions Nedir?

eminbasbayan

eminbasbayan

4 dk okuma
JavaScript’te Higher Order Functions Nedir?
🔍 Büyütmek için tıklayın

JavaScript öğrenmeye başlayan herkes fonksiyonların nasıl çalıştığını öğrendiğinde büyük bir kapıyı aralamış olur. Fonksiyonlar sadece görev yapan kod parçaları değildir; aynı zamanda girdi (parametre) ve çıktı (döndürülen değer) olarak da kullanılabilir. Bu da bize yazılım dünyasında çok güçlü bir esneklik sağlar.

Bu yazıda fonksiyonların iki önemli özelliğini ele alacağız:

  1. Fonksiyonların başka bir fonksiyona parametre olarak verilmesi
  2. Fonksiyonların başka bir fonksiyon döndürmesi

Her iki özellik de higher order functions (üst düzey fonksiyonlar) başlığı altında incelenir. Hadi şimdi sırasıyla örneklerle inceleyelim.

Fonksiyonlar da Birer Değerdir

JavaScript’te fonksiyonlar da tıpkı sayılar, metinler veya diziler gibi birer değerdir. Yani:

  • Değişkenlere atanabilir,
  • Parametre olarak başka fonksiyonlara gönderilebilir,
  • Fonksiyonlardan döndürülebilir.
const sayHello = function() { console.log("Merhaba!"); }; sayHello(); // "Merhaba!"

Burada sayHello değişkeninin içine bir fonksiyon koyduk. Artık bu değişkeni normal bir değer gibi kullanabiliriz.

1. Fonksiyonları Parametre Olarak Vermek

Bir fonksiyonun, parametre olarak başka bir fonksiyonu alması çok yaygın bir yapıdır.

Örnek: Fonksiyonu İki Kez Çalıştıran Yapı

function executeTwice(task) { task(); task(); } function displayMessage() { console.log("Bu bir mesajdır."); } executeTwice(displayMessage);

Çalıştırıldığında konsolda şunu görürüz:

Bu bir mesajdır. Bu bir mesajdır.

Burada dikkat edilmesi gereken nokta:

  • executeTwice(displayMessage) doğru kullanımdır (fonksiyonun kendisini gönderiyoruz).
  • executeTwice(displayMessage()) yanlış olur (fonksiyonu hemen çalıştırır ve sonucunu gönderir).

Örnek: 5 Kez Çalıştıran Fonksiyon

function repeatFiveTimes(action) { for (let i = 0; i < 5; i++) { action(); } } function printRandomNumber() { const number = Math.floor(Math.random() * 100) + 1; console.log("Rastgele sayı:", number); } repeatFiveTimes(printRandomNumber);

Bu kod çalıştırıldığında her seferinde 1 ile 100 arasında farklı 5 sayı yazdırır.

Böylece bir fonksiyonun parametre olarak alınmasının pratik faydasını görmüş olduk.

2. Fonksiyon Döndürmek: Fonksiyonların Fonksiyon Üretmesi

Fonksiyonlar sadece parametre almakla kalmaz; aynı zamanda yeni bir fonksiyon üretebilir ve döndürebilir.

Basit Örnek

function sesUretici() { return function() { console.log("Yeni ses: Bip bip!"); }; } const ses = sesUretici(); ses(); // "Yeni ses: Bip bip!"

Burada sesUretici, çağrıldığında bize bir fonksiyon döndürür. Biz de o fonksiyonu değişkene atayıp sonradan çalıştırabiliriz.

Gerçek Hayat Benzetmesi: Otomat Makinesi

Bunu bir otomat makinesine benzetebiliriz:

  • Parayı atarsın (fonksiyonu çağırırsın).
  • Makine sana bir paket verir (yeni bir fonksiyon döner).
  • Paketi açtığında ne olduğunu görürsün (fonksiyonu çalıştırırsın).

Örnek: Rastgele Mesaj Gönderen Fonksiyon

function mesajUretici() { const rastgeleSayi = Math.random(); if (rastgeleSayi > 0.5) { return function() { console.log("Harika! Bugün şanslı günündesin."); }; } else { return function() { console.log("Maalesef... Bugün pek iyi gitmiyor."); }; } } const mesaj = mesajUretici(); mesaj();

Her çalıştırıldığında farklı bir fonksiyon döner ve konsola farklı mesaj yazdırabilir.

Örnek: Factory Function (Kontrol Fonksiyonları Üretmek)

function aralikKontrolFonksiyonu(min, max) { return function(sayi) { return sayi >= min && sayi <= max; }; } const gencMi = aralikKontrolFonksiyonu(13, 25); const yetiskinMi = aralikKontrolFonksiyonu(26, 64); const yasliMi = aralikKontrolFonksiyonu(65, 120); console.log(gencMi(20)); // true console.log(yetiskinMi(50)); // true console.log(yasliMi(30)); // false

Burada tek bir üretici fonksiyon yazarak farklı aralıklar için kontrol fonksiyonları elde ettik. Kodumuzu tekrar tekrar yazmamıza gerek kalmadı.

Higher Order Functions Neden Önemlidir?

Hem parametre olarak fonksiyon almak hem de fonksiyon döndürmek:

  • Kodumuzu daha esnek hale getirir,
  • Tekrar kullanılabilirliği artırır,
  • Daha modüler bir yapı kurmamıza yardımcı olur.

JavaScript’in yerleşik fonksiyonlarının çoğu zaten higher order function’dır:

  • forEach, map, filter → Fonksiyonları parametre olarak alır.
  • setTimeout → Fonksiyon parametre olarak alır.
  • Factory function mantığı → Fonksiyon döndürür.

Sonuç

Bu yazıda higher order functions kavramının iki yönünü öğrendik:

  1. Fonksiyonları parametre olarak vermek
  2. Fonksiyonlardan fonksiyon döndürmek

Bu yapıların gücünü kavradıkça JavaScript kodunun ne kadar esnek ve güçlü olabileceğini fark edeceksiniz. Modern JavaScript ve özellikle framework’lerde (React, Node.js vb.) bu mantık sıkça karşımıza çıkar.

Etiketler

#Eğitimler#JavaScript Dersleri

İlgili Yazılar

Bu konuyla ilgili diğer yazılarımızı da inceleyebilirsiniz

Web Geliştirmede Neden JavaScript'e İhtiyacımız Var?
JavaScript Dersleri

Web Geliştirmede Neden JavaScript'e İhtiyacımız Var?

Web geliştirme, temel olarak üç ana yapı taşı üzerine kuruludur: **HTML, CSS ve JavaScript**. Bu üçlüden **HTML**, sayfanın iskeletini oluşturur, **CSS**, tasarımı ve görsel düzenlemeleri yapar

2 dk
JavaScript'e Giriş: JavaScript Nedir?
JavaScript Dersleri

JavaScript'e Giriş: JavaScript Nedir?

Web geliştirme yolculuğunuzda büyük bir adım atıyorsunuz! HTML ve CSS ile statik web sayfaları oluşturmayı öğrendiniz, ancak şimdi JavaScript ile sayfanıza hareket ve etkileşim katmanını eklemeye hazırsınız. JavaScript, web sayfalarını dinamik hale getiren ve kullanıcı etkileşimlerini yöneten

3 dk
JavaScript Değişkenler (Variables) Nedir?
JavaScript Dersleri

JavaScript Değişkenler (Variables) Nedir?

JavaScript, web geliştirme dünyasının en önemli dillerinden biridir. Dinamik web siteleri, interaktif uygulamalar, oyunlar ve animasyonlar gibi birçok alanda kullanılır. Ancak, bu tür gelişmiş uygulamalar oluşturabilmek için önce JavaScript'in temellerini anlamak gerekir. Bu

4 dk
JavaScript İlkel (Primitive) Veri Tipleri
JavaScript Dersleri

JavaScript İlkel (Primitive) Veri Tipleri

JavaScript, modern web geliştirmede vazgeçilmez bir programlama dilidir. Web sitelerini daha dinamik hale getirmek, etkileşim eklemek ve hatta oyunlar ve uygulamalar geliştirmek için kullanılır. Ancak, bu eğlenceli ve güçlü özelliklere ulaşmadan önce, JavaScript'in temellerin

4 dk
JavaScript'te Sayılar ve Matematiksel Operatörler
JavaScript Dersleri

JavaScript'te Sayılar ve Matematiksel Operatörler

JavaScript, modern web geliştirmede en yaygın kullanılan programlama dillerinden biridir. Bu dilde çalışırken sayılarla sıkça işlem yaparız. İster bir hesap makinesi uygulaması geliştiriyor olun, ister bir oyundaki puan sistemini kodluyor olun, sayılar kaçınılmaz bir parçadır. JavaScri

4 dk
JavaScript'te Boolean Veri Tipi
JavaScript Dersleri

JavaScript'te Boolean Veri Tipi

JavaScript'ı öğrenmeye yeni başlayanlar için veri tipleri oldukça önemlidir. Bu yazıda, en temel veri tiplerinden biri olan **Boolean (mantıksal) değerleri** inceleyeceğiz. Boolean değerleri, programlamada sıklıkla kullanılan ve kodlarımızın man

3 dk