Ders İçeriği
Giriş
Programlama yaparken, belirli bir görevi yerine getiren kod bloklarını sık sık tekrar kullanma ihtiyacı duyarız. Örneğin, iki sayıyı toplamak, bir mesajı ekrana yazdırmak veya bir kullanıcının adını formatlamak gibi. Bu tür tekrarlanan görevleri her seferinde yeniden yazmak yerine, fonksiyonlar kullanarak kodumuzu daha organize, okunabilir ve yeniden kullanılabilir hale getirebiliriz.
Fonksiyonlar, belirli bir görevi yerine getirmek üzere tasarlanmış, yeniden kullanılabilir kod bloklarıdır. Fonksiyonlar, programlarımızı daha küçük, yönetilebilir parçalara ayırmamıza yardımcı olur. Bu, kodun anlaşılmasını, test edilmesini ve bakımını kolaylaştırır.
Bu derste, JavaScript'te fonksiyonların nasıl tanımlandığını, nasıl çağrıldığını, parametrelerin ve argümanların ne olduğunu, fonksiyonların nasıl değer döndürdüğünü ve farklı fonksiyon türlerini öğreneceğiz.
Fonksiyon Tanımlama
JavaScript'te fonksiyon tanımlamanın birkaç yolu vardır. En yaygın yöntem, function
anahtar kelimesini kullanmaktır.
Fonksiyon Bildirimi (Function Declaration)
Fonksiyon bildirimi, function
anahtar kelimesi, ardından fonksiyonun adı, parantez içinde parametre listesi ve süslü parantezler içinde fonksiyonun gövdesi (kod bloğu) ile yapılır.
Temel sözdizimi şu şekildedir:
- fonksiyonAdi: Fonksiyonu çağırmak için kullanılacak isim.
- parametre1, parametre2: Fonksiyona dışarıdan değer aktarmak için kullanılan değişkenler (isteğe bağlı).
- Fonksiyon Gövdesi: Fonksiyon çağrıldığında çalıştırılacak JavaScript kodları.
- return: Fonksiyonun bir değer döndürmesini sağlar (isteğe bağlı).
Not: Fonksiyon bildirimleri, kodun herhangi bir yerinde tanımlanabilir ve tanımlandıkları yerden önce bile çağrılabilirler. Buna "hoisting" (yukarı taşıma) denir.
Fonksiyon Çağırma
Bir fonksiyonu tanımladıktan sonra, onu çalıştırmak için çağırmanız gerekir. Fonksiyon çağırma işlemi, fonksiyonun adını ve ardından parantez ()
kullanarak yapılır. Eğer fonksiyon parametre alıyorsa, parantez içine argümanlar (fonksiyona gönderilecek değerler) yazılır.
Parametreler ve Argümanlar
Fonksiyonlar, dışarıdan bilgi almak için parametreleri kullanır. Parametreler, fonksiyon tanımında parantez içinde belirtilen değişkenlerdir. Fonksiyon çağrıldığında, bu parametrelere karşılık gelen değerlere argüman denir.
Varsayılan Parametreler (Default Parameters)
ES6 ile birlikte, bir fonksiyona argüman gönderilmediğinde parametrelerin alacağı varsayılan değerleri belirleyebilirsiniz.
Rest Parametresi (...)
ES6 ile gelen rest parametresi (...
), bir fonksiyona belirsiz sayıda argüman göndermenizi sağlar. Bu argümanlar bir dizi içinde toplanır.
Not: Rest parametresi, fonksiyon tanımındaki son parametre olmalıdır.
return İfadesi
Fonksiyonlar sadece işlem yapmakla kalmaz, aynı zamanda bir sonuç değeri de üretebilirler. return
ifadesi, bir fonksiyonun çalışmasını sonlandırır ve belirtilen değeri fonksiyonun çağrıldığı yere geri döndürür.
Eğer bir fonksiyonda return
ifadesi kullanılmazsa veya return
ifadesinden sonra bir değer belirtilmezse, fonksiyon varsayılan olarak undefined
değerini döndürür.
Fonksiyon İfadeleri (Function Expressions)
Fonksiyon tanımlamanın bir diğer yolu da fonksiyon ifadeleridir. Fonksiyon ifadesinde, bir fonksiyon oluşturulur ve bir değişkene atanır.
Temel sözdizimi şu şekildedir:
Fonksiyon ifadeleri, fonksiyon bildirimlerinden farklı olarak "hoisting"e tabi değildir. Yani, fonksiyon ifadesini tanımlamadan önce çağıramazsınız.
İpucu: Fonksiyon ifadeleri, özellikle bir fonksiyonu başka bir fonksiyona argüman olarak göndermek (callback fonksiyonları) veya bir nesnenin metodu olarak tanımlamak gibi durumlarda kullanışlıdır.
Ok Fonksiyonları (Arrow Functions)
ES6 ile tanıtılan ok fonksiyonları, fonksiyon ifadelerini daha kısa ve okunabilir bir şekilde yazmamızı sağlar. Özellikle basit fonksiyonlar ve callback fonksiyonları için yaygın olarak kullanılırlar.
Temel sözdizimi şu şekildedir:
Uyarı: Ok fonksiyonlarının, geleneksel fonksiyonlardan farklı bir this
bağlamı vardır. Bu konu, nesne yönelimli programlama ve this
anahtar kelimesi derslerinde daha detaylı ele alınacaktır.
Hemen Çağrılan Fonksiyon İfadeleri (IIFE - Immediately Invoked Function Expressions)
IIFE, tanımlandığı anda hemen çalışan bir fonksiyon ifadesidir. Genellikle, global kapsamı kirletmemek ve değişkenleri yerel bir kapsamda tutmak için kullanılır.
Temel sözdizimi şu şekildedir:
İpucu: IIFE'ler, özellikle kütüphane veya modül geliştirirken, kodunuzun diğer kodlarla çakışmasını önlemek için kullanışlıdır.
Alıştırmalar
- Bir sayının faktöriyelini hesaplayan bir fonksiyon yazın (örneğin, 5! = 5 * 4 * 3 * 2 * 1 = 120).
- Verilen bir dizideki en büyük sayıyı bulan ve döndüren bir fonksiyon yazın.
- Bir string'i tersine çeviren bir fonksiyon yazın (örneğin, "merhaba" -> "abahrem").
- Bir metindeki kelime sayısını hesaplayan bir fonksiyon yazın.
- İki parametre alan (bir sayı ve bir üs) ve sayının üssünü hesaplayıp döndüren bir ok fonksiyonu yazın. Üs parametresi için varsayılan değer olarak 2 belirleyin.
Bu derste JavaScript'teki fonksiyonları ve parametreleri öğrendik:
- Fonksiyonlar: Belirli bir görevi yerine getiren, yeniden kullanılabilir kod bloklarıdır.
- Fonksiyon Tanımlama:
function
anahtar kelimesi (bildirim) veya fonksiyon ifadeleri (değişkene atama) ile yapılır. - Fonksiyon Çağırma: Fonksiyon adı ve parantezler
()
ile yapılır. - Parametreler ve Argümanlar: Parametreler fonksiyon tanımındaki değişkenler, argümanlar ise fonksiyona gönderilen değerlerdir. Varsayılan parametreler ve rest parametresi kullanılabilir.
- return İfadesi: Fonksiyondan bir değer döndürmek için kullanılır.
- Fonksiyon İfadeleri: Fonksiyonların değişkenlere atanmasıdır.
- Ok Fonksiyonları: Fonksiyon ifadelerini daha kısa yazmak için kullanılan modern bir sözdizimidir.
- IIFE: Tanımlandığı anda hemen çalışan fonksiyon ifadeleridir.
Fonksiyonlar, JavaScript programlamanın temel yapı taşlarından biridir. Kodunuzu organize etmek, yeniden kullanılabilirliği artırmak ve daha karmaşık uygulamalar geliştirmek için fonksiyonları etkili bir şekilde kullanmak çok önemlidir.
Bir sonraki derste, fonksiyonların kapsam (scope) ve closure kavramlarını daha detaylı inceleyeceğiz.