CodeBlanks Logo Icon CodeBlanks

Saf fonksiyonlar

JavaScript kursu · İleri seviye · Ders 54/100

Yan etkisi olmayan, aynı girişe aynı çıktıyı veren saf fonksiyonları öğrenirsin.

Saf fonksiyonlar

Bir saf fonksiyon (pure function), aynı girdi her zaman aynı çıktıyı üretir ve dış dünyayı değiştirmez. Yan etkisi yoktur: dosya yazmaz, ekrana yazdırmaz, global değişkeni değiştirmez.

const add = (a, b) => a + b;

Bu fonksiyon safdır çünkü yalnızca a ve b'yi kullanır ve yeni bir değer döndürür. Aynı (2, 3) girdisi her zaman 5 verir. Bu özellik deterministik olmak olarak bilinir ve test etmeyi kolaylaştırır.

Yan etkiler

Bir yan etki (side effect), fonksiyonun dış dünyada gözlemlenebilir bir değişiklik yapmasıdır. Global bir değişkeni değiştirmek, ekrana yazdırmak, bir diziye push yapmak veya ağ isteği göndermek yan etkilerdir.

let total = 0;
function add(n) {
  total += n;
}

add saf değildir çünkü total değişkenini değiştirir. Aynı girdi farklı sonuçlar verebilir çünkü çağrı sayısına bağlıdır. Saf fonksiyonlar bu belirsizliği ortadan kaldırır ve kodun okunmasını kolaylaştırır.

Uygulama Saf bir tax fonksiyonu yaz

price adında bir parametre alan ve price değerini KDV oranıyla çarpan saf bir ok fonksiyonu yaz. Fonksiyonun adı tax olsun. Sonra console.log(tax(100)) çağrısı ile sonucu yazdır.

Örnek çözümü göster
const tax = (price) => price * 1.2;
console.log(tax(100));

Kendini test et

  1. Hangisi saf fonksiyondur?

    • let total = 0; function add(n) { total += n; }
    • function roll() { return Math.random(); }
    • const double = (n) => n * 2;
    • function log(msg) { console.log(msg); }
    Cevabı göster

    const double = (n) => n * 2; — Doğru! double yalnızca n'yi kullanır ve yeni değer döndürür; dış durumu değiştirmez.

  2. Saf bir double fonksiyonu tamamla

    const double = (n) => ____;
    Cevabı göster
    const double = (n) => n * 2;
  3. Saf fonksiyon kavramlarını eşleştir

    saf fonksiyon
    aynı girdi, aynı çıktı
    yan etki
    dış durumu değiştirir
    deterministik
    rastgelelik yok

İleri seviye bölümündeki tüm dersler