JavaScript: Başlangıçtan İleri Seviyeye
Bölüm 9 / 312 dk okuma

Fonksiyonlar

Function declaration, expression, arrow function, varsayılan parametreler ve rest.

Fonksiyon = tekrar tekrar çağrılabilen, parametre alıp değer döndürebilen bir kod bloğu. JavaScript'te fonksiyonlar birinci sınıf vatandaştır: değişkene atanabilir, parametre olarak geçilebilir, döndürülebilir.

Function declaration

function selamla(isim) {
  return `Merhaba, ${isim}!`;
}
 
selamla("Furkan"); // "Merhaba, Furkan!"

Hoist edilir — tanımlanmadan önce de çağrılabilir.

Function expression

const selamla = function (isim) {
  return `Merhaba, ${isim}!`;
};

Hoist edilmez. const neredeyse her zaman tercih sebebidir.

Arrow function (ok fonksiyonu)

ES6 ile gelen kompakt sözdizimi:

const selamla = (isim) => `Merhaba, ${isim}!`;
const topla = (a, b) => a + b;
const kare = (x) => x * x;
 
// Çoklu satır
const fiyatla = (urun) => {
  const vergi = urun.fiyat * 0.18;
  return urun.fiyat + vergi;
};

Tek parametre varsa parantez opsiyoneldir, tek satır return ise süslü parantez ve return opsiyoneldir.

Önemli

Arrow function'ların kendi this'i yoktur — bulundukları kapsamın this'ini kullanırlar. Detayı bölüm 21'de.

Varsayılan parametreler

function selamla(isim = "Misafir") {
  return `Merhaba, ${isim}!`;
}
 
selamla();        // "Merhaba, Misafir!"
selamla("Ali");   // "Merhaba, Ali!"

Rest parametreleri (...)

Geriye kalan tüm argümanları diziye toplar:

function topla(...sayilar) {
  return sayilar.reduce((a, b) => a + b, 0);
}
 
topla(1, 2, 3);       // 6
topla(1, 2, 3, 4, 5); // 15

Fonksiyon parametre olarak

Callback (geri çağrım) yaygın bir pattern'dir:

function tekrarla(n, callback) {
  for (let i = 0; i < n; i++) callback(i);
}
 
tekrarla(3, (i) => console.log(`tur ${i}`));

IIFE (Immediately Invoked Function Expression)

Tanımlandığı anda çağrılan fonksiyon. Eski dönemde scope korumak için kullanılırdı, modern kodda let/const block scope sayesinde gerek yok:

(function () {
  const gizli = 42;
  console.log(gizli);
})();

Saf fonksiyonlar (pure functions)

İdeal: aynı input → aynı output, dış dünyaya etki etmez.

// ✅ saf
function topla(a, b) {
  return a + b;
}
 
// ❌ saf değil — dış değişkene yazıyor
let toplam = 0;
function ekle(x) {
  toplam += x;
}

Saf fonksiyonlar test edilmesi en kolay olanlardır.

Bu bölümü bitirdin mi?

İlerlemen tarayıcıda saklanır, eğitim listesinde görünür.

Paylaş