
JavaScript Fonksiyonları: Temeller ve İleri Seviye Kullanım
JavaScript, web uygulamaları geliştirmede en yaygın kullanılan programlama dillerinden biridir. JavaScript'in güçlü yönlerinden biri de fonksiyonlar ve onların esnek kullanım şekilleridir. Bu yazıda, JavaScript fonksiyonlarını temel düzeyden ileri seviyeye kadar detaylı bir şekilde ele alacağız ve örneklerle her seviyedeki fonksiyon kullanımını inceleyeceğiz.
1. JavaScript Fonksiyonlarının Temel Kullanımı
Fonksiyonlar, belirli bir işi yapması için tanımlanan kod bloklarıdır. JavaScript'te fonksiyonlar, farklı şekillerde tanımlanabilir. En temel fonksiyon tanımlama yöntemi, fonksiyon beyanıdır.
Fonksiyon Tanımlama
Bir fonksiyon tanımlamak için function
anahtar kelimesi kullanılır. İşte basit bir fonksiyon örneği:
function selamla() {
console.log("Merhaba, dünya!");
}
selamla(); // Çıktı: Merhaba, dünya!
Bu örnekte, selamla
adlı bir fonksiyon tanımladık ve onu çağırdık. Fonksiyon içerisinde, sadece console.log
komutu çalıştırılmaktadır.
Fonksiyon Parametreleri
Fonksiyonlar parametre alabilir. Parametreler, fonksiyona dışarıdan veri göndermek için kullanılır.
function selamla(isim) {
console.log("Merhaba, " + isim + "!");
}
selamla("Ahmet"); // Çıktı: Merhaba, Ahmet!
selamla("Zeynep"); // Çıktı: Merhaba, Zeynep!
Yukarıdaki örnekte, selamla
fonksiyonu bir parametre alır ve bu parametreyi mesaj içinde kullanır.
Fonksiyon Değeri Döndürme
Bir fonksiyon bir değer döndürebilir. Değer döndürmek için return
anahtar kelimesi kullanılır.
function topla(a, b) {
return a + b;
}
let sonuc = topla(5, 3);
console.log(sonuc); // Çıktı: 8
Bu örnekte, topla
fonksiyonu iki sayıyı toplar ve sonucu döndürür.
2. Fonksiyon İfadeleri (Function Expressions)
Fonksiyonlar yalnızca beyan edilerek tanımlanmaz, aynı zamanda bir değişkene atanabilir. Bu, fonksiyon ifadeleriyle yapılır.
const carp = function(a, b) {
return a * b;
};
console.log(carp(4, 5)); // Çıktı: 20
Bu yöntemde, fonksiyon bir anonim fonksiyon olarak tanımlanır ve bir değişkene atanır. Bu fonksiyon, yalnızca tanımlandığı noktada çağrılabilir.
3. Arrow Fonksiyonları (Ok Fonksiyonları)
ES6 ile tanıtılan arrow fonksiyonları, daha kısa bir söz dizimi sağlar. Özellikle tek satırlık fonksiyonlar için oldukça kullanışlıdır.
const topla = (a, b) => a + b;
console.log(topla(5, 10)); // Çıktı: 15
Eğer fonksiyon yalnızca bir parametre alıyorsa, parantezler opsiyoneldir:
const kare = x => x * x;
console.log(kare(4)); // Çıktı: 16
Arrow fonksiyonları, geleneksel fonksiyonlardan farklı olarak, this
anahtar kelimesini bağlamdan (context) bağımsız bir şekilde kullanır. Bu özelliği, bazı durumlarda geleneksel fonksiyonlardan daha faydalı olabilir.
4. İleri Seviye Fonksiyon Kullanımı
JavaScript fonksiyonları yalnızca temel kullanımda değil, aynı zamanda daha ileri seviyelerde de güçlüdür. Şimdi, bazı ileri seviye fonksiyon kullanımlarını inceleyeceğiz.
Fonksiyonları Yüksek Dereceli (Higher-Order) Fonksiyonlar Olarak Kullanma
Yüksek dereceli fonksiyonlar, bir fonksiyonu parametre olarak alabilen veya bir fonksiyon döndürebilen fonksiyonlardır.
function islemiYap(fonksiyon, x, y) {
return fonksiyon(x, y);
}
function topla(a, b) {
return a + b;
}
function carp(a, b) {
return a * b;
}
console.log(islemiYap(topla, 5, 3)); // Çıktı: 8
console.log(islemiYap(carp, 5, 3)); // Çıktı: 15
Yukarıdaki örnekte, islemiYap
fonksiyonu, başka fonksiyonları parametre olarak alır ve bunları çalıştırır.
Fonksiyon Kapanışları (Closures)
JavaScript'te, bir fonksiyon başka bir fonksiyonun içinde tanımlanabilir ve iç fonksiyon, dış fonksiyonun parametrelerine ve değişkenlerine erişebilir. Buna "closure" denir.
function dışFonksiyon(x) {
return function içFonksiyon(y) {
return x + y;
};
}
const topla5 = dışFonksiyon(5);
console.log(topla5(3)); // Çıktı: 8
console.log(topla5(10)); // Çıktı: 15
Bu örnekte, dışFonksiyon
fonksiyonu bir içFonksiyon
döndürür ve iç fonksiyon, dış fonksiyonun parametresine erişebilir. Böylece, dış fonksiyonun verisi iç fonksiyon içinde "kapalı" (closure) olarak saklanır.
Fonksiyon Parametrelerine Varsayılan Değerler Atama
ES6 ile birlikte, fonksiyon parametrelerine varsayılan değerler atanabilir. Eğer bir parametre verilmezse, varsayılan değer kullanılacaktır.
function merhaba(isim = "Ziyaretçi") {
console.log("Merhaba, " + isim + "!");
}
merhaba(); // Çıktı: Merhaba, Ziyaretçi!
merhaba("Ahmet"); // Çıktı: Merhaba, Ahmet!
Bu örnekte, isim
parametresine bir değer verilmediğinde, varsayılan olarak "Ziyaretçi"
değeri kullanılır.
Rest Parametreleri ve Spread Operatörü
rest
parametreleri, bir fonksiyona değişken sayıda argüman gönderilmesini sağlar. ...
ile belirtilir.
function toplama(...sayilar) {
return sayilar.reduce((toplam, sayi) => toplam + sayi, 0);
}
console.log(toplama(1, 2, 3)); // Çıktı: 6
console.log(toplama(10, 20, 30, 40)); // Çıktı: 100
Burada, ...sayilar
ifadesi, parametrelerin sayısını sınırlamadan tüm sayıları bir dizi olarak alır ve toplama işlemi yapılır.
Fonksiyonla this
Kullanımı
JavaScript fonksiyonlarında, this
anahtar kelimesi, fonksiyonun nasıl çağrıldığına bağlı olarak değişir. Ancak, arrow fonksiyonlarında this
bağlamı fonksiyon tanımlandığı yerden alınır.
const obje = {
ad: "JavaScript",
yazdir: function() {
console.log("Merhaba, " + this.ad);
}
};
obje.yazdir(); // Çıktı: Merhaba, JavaScript
Eğer arrow fonksiyonu kullansaydık, this
farklı davranacaktı.
const obje = {
ad: "JavaScript",
yazdir: () => {
console.log("Merhaba, " + this.ad); // `this` burada global nesneye işaret eder
}
};
obje.yazdir(); // Çıktı: Merhaba, undefined
5. Sonuç
JavaScript fonksiyonları, temel düzeyden ileri seviyeye kadar geniş bir yelpazede kullanılabilir. Temel fonksiyonlar, parametreler ve döndürülen değerlerle başlarken, fonksiyon ifadeleri, arrow fonksiyonları ve ileri seviye kavramlarla fonksiyonların gücünü daha da artırabilirsiniz. Yüksek dereceli fonksiyonlar, closures, varsayılan parametreler ve this
kullanımı gibi özellikler, JavaScript fonksiyonlarını güçlü ve esnek kılar.
Her seviyede fonksiyonları kullanarak daha etkili ve verimli JavaScript kodları yazabilirsiniz. Bu yazıda ele aldığımız tüm konuları özümseyerek, fonksiyon kullanımındaki yetkinliğinizi artırabilirsiniz.
Yorum Yap