Programlamada bir işlemi birden fazla kez yapmak ya da farklı verilerle tekrar etmek istediğimizde fonksiyonlar bize büyük kolaylık sağlar. Fonksiyonları, belirli görevleri yerine getiren küçük makineler gibi düşünebiliriz. Bu makinelere bazen bir bilgi vermemiz gerekir. İşte bu verilen bilgiler, fonksiyonun argümanlarıdır.
Şimdi bu yazıda, bir fonksiyona birden fazla bilgi (argüman) nasıl gönderilir, bu bilgilerin sırası neden önemlidir ve yanlış kullanımda neler olur, bunu detaylıca anlatacağız.
Fonksiyonlar Birden Fazla Bilgi Alabilir
Önce basit bir örnekle başlayalım:
function introduce(name, age) {
console.log("Benim adım " + name + " ve yaşım " + age);
}
Bu fonksiyon iki bilgi bekliyor:
- Birincisi kişinin ismi (
name
)
- İkincisi kişinin yaşı (
age
)
Fonksiyonu şöyle çağırabiliriz:
introduce("Ali", 16);
Ekrana şunlar yazılır:
Benim adım Ali ve yaşım 16
Burada önemli olan şey, bilgilerin sırasıdır. İlk yazılan bilgi ("Ali"
) name
değişkenine, ikinci bilgi (16
) ise age
değişkenine atanır.
Eğer sırayı karıştırırsak:
introduce(16, "Ali");
Ekrana bu yazılır:
Benim adım 16 ve yaşım Ali
Gördüğün gibi anlam tamamen bozuldu. JavaScript, bilgilerin anlamına bakmaz; sadece sıraya bakar. Bu nedenle fonksiyon çağırırken hangi bilgi hangi sırada verilecek, bunu dikkatli planlamak gerekir.
Argümanlarla Küçük Bir Uygulama
Bu sefer farklı bir örnek yapalım. Elimizde bir fonksiyon olsun, bu fonksiyon bir öğrencinin adını ve aldığı notu alsın. Notu 50’nin üzerindeyse “Geçti”, değilse “Kaldı” yazdırsın.
function checkResult(studentName, score) {
if (score >= 50) {
console.log(studentName + " dersi geçti.");
} else {
console.log(studentName + " dersten kaldı.");
}
}
Kullanımı şöyle olabilir:
checkResult("Merve", 72);
// Merve dersi geçti.
checkResult("Kerem", 45);
// Kerem dersten kaldı.
Bu örnekte hem string (yazı) türünde (studentName
), hem de number (sayı) türünde (score
) veri kullandık. JavaScript bu türleri ayırt edebilir, ama sıralarını değiştirmemek gerekir.
Bir Metni Belirli Sayıda Tekrarlamak
Bazı durumlarda, aynı metni birden fazla kez yazdırmak isteyebiliriz. Örneğin, bir uyarı mesajını ekranda beş kez göstermek gibi.
Aşağıdaki fonksiyon tam da bunu yapar:
function repeatText(text, count) {
let output = "";
for (let i = 0; i < count; i++) {
output += text;
}
console.log(output);
}
Kullanımı:
repeatText("Uyarı! ", 3);
// Uyarı! Uyarı! Uyarı!
Burada dikkat edilmesi gereken şey, ikinci bilgiyi sayı olarak vermemizdir. Eğer sıralamayı karıştırırsak:
repeatText(3, "Uyarı!"); // yanlış kullanım
Bu durumda JavaScript döngüyü anlamaz çünkü count
olarak bir metin gelir. JavaScript “3 < ‘Uyarı!’” gibi mantıksız bir kıyaslama yapmaya çalışır ve sonuçta döngü hiç çalışmaz.
Sonuç:
(empty line - yani hiçbir şey yazmaz)
Eksik Argüman Verilirse Ne Olur?
JavaScript’te fonksiyonu çağırırken bir argümanı atlamışsak, bu durum hemen hata vermez. Ama atlanan bilgi, kod içinde kullanıldığında sorun çıkarabilir.
Örneğin:
function sayHi(name, city) {
console.log("Merhaba " + name + ", " + city + " şehrine hoş geldin!");
}
Bu fonksiyonu şöyle kullanırsak:
sayHi("Zeynep", "İzmir");
Çıktı:
Merhaba Zeynep, İzmir şehrine hoş geldin!
Ama ikinci bilgiyi vermezsek:
sayHi("Zeynep");
Çıktı:
Merhaba Zeynep, undefined şehrine hoş geldin!
Çünkü city
değişkeni tanımsız olur (undefined
). JavaScript bu durumu hata olarak görmez, ama ekrana mantıksız bir şey yazar. Bu nedenle eksik argüman verildiğinde, kodun bu durumu nasıl yöneteceğini düşünmek gerekir.
Sonuç
JavaScript’te fonksiyonlara birden fazla bilgi gönderebiliriz. Bu bilgiler:
- Sıralı şekilde tanımlanır,
- Virgülle ayrılır,
- Ve sıraları çağrılırken de korunmalıdır.
Farklı türde bilgiler (örneğin bir yazı ve bir sayı) aynı fonksiyonda kullanılabilir. Ancak sıraları karışırsa fonksiyon yanlış sonuç verir ya da hiç çalışmaz.
Ayrıca bir argüman eksik verildiğinde JavaScript buna ses çıkarmaz, ama o eksik bilgi kullanılırsa hata alırız veya mantıksız sonuçlar görürüz.
Bu konular, fonksiyonları daha güçlü ve esnek hale getirmenin temelini oluşturur. İleride daha karmaşık projelerde bu yapıları çokça kullanacağız. Bu yüzden bu temel bilgileri çok iyi anlamak önemlidir.