JavaScript Fonksiyon Tanımlama
Genellikle bir fonksiyon bir kodun yinelemeli olarak kullanılacağı durumda tanımlanır. Diğer programlama dillerinde de kullanılan fonksiyonlar “altprogram” olarak da ifade edilmektedir. Fonksiyon isim ve gövde olarak iki parçadan oluşur. isim kısmından fonksiyona parametre geçişi sağlanabilir. Gövde üzerinde de çalıştırılacak olan kodlar yürütülmektedir. Bir fonksiyona parametre geçişi olabildiği gibi fonksiyon isimleri üzerinden değer dönüşü de yapılabilmektedir. Fonksiyon iki parçadan oluştuğunu yazmıştım. Fonksiyon gövdesi yürütülecek komutları barındırır.
Fonksiyon ismi ile de fonksiyonu terkar tekrar kullanbiliriz. Fonksiyonu çağırmak (çalıştırmak) için bilmemiz gerekenler, fonksiyon adı ve fonksiyonunun aldığı parametrelerdir.
Tanım: Gelelim javascript ile fonksiyon nasıl tanımlandığına;
JavaScript dilinde her fonksiyon bir nesnedir. Varsayılan değer dışında bir fonksiyondan bir değer döndürmek için return ifadesi kullanılmak zorundadır. return değeri olmayan bir fonksiyon varsayılan değeri döndürmektedir. Kurucu metod ile oluşturulan nesneler dışındaki tüm fonksiyonlardaki varsayılan değerler undefined türüdür. Yazım Kuralı: function isim([parametre[, parametre[, ... parametre]]]) { ifadeler } Yukarıdaki tanımlama en doğru tanımlama kuralı olmasına rağmen, fonksiyon kavramına yeni olanlar için fonksiyonları 4 ana gruba ayırabiliriz.
1. Parametresi ve geriye dönüş değeri olmayan fonksiyonlar
Örnek:
//fonsiyonun tanımlanması
function selamla(){
alert("merhaba dünya");
}
//fonksiyonunun kullanımı selamla();
2. Parametreli ve geriye dönüş değeri olmayan fonksiyonlar
Bir fonksiyonun parametre alması demek fonksiyonun adından sonraki parantez içine virgüller ile fonksiyonun dışarıdan alacağı parametreler belirtilir. Aşağıdaki selamla fonksiyonu dışarıdan ad gelen değerleri ad değişkeni ile almaktadır. Kendi içinde ad değişkeni ile kullanıp ekrana yazdırmaktadır. Ana programda ise tanımlanan fonksiyon iki sefer farklı parametreler ile çağrılmaktadır.
//fonsiyonun tanımlanması
function selamla(ad){
alert("merhaba "+ad);
}
//fonksiyonunun kullanımı
//fonsiyonları istediğimiz kadar çağırabiliriz.
selamla("hayri");
selamla("ahmet");
3. Parametresiz ve geriye dönüş değeri olan fonksiyonlar
Geriye dönüş değeri olan fonksiyonlarda return ifadesi kullanılması zorunludur. Fonksiyonda üretilen değer return ifadesi üzerinden fonksiyon adı ile ana programa geçirilir. Aşağıdaki örnekte alınan yıl değeri yilGetir() fonksiyonu ile yil değişkenine aktarılır. yil değişkeni de alert ile ekrana yazdırılmaktadır.
//fonsiyonun tanımlanması
function yilGetir(){
return (new Date()).getFullYear();
}
//fonksiyonunun kullanımı
var yil=yilGetir();
alert(yil);
4. Parametresi ve geriye dönüş değeri olan fonksiyonlar
//fonsiyonun tanımlanması
function sayiTopla(s1,s2){
var toplam=s1+s2;
return return toplam;
}
var sayi1=120;
var sayi2=250;
//fonksiyonun kullanımı
var sonuc= sayiTopla(sayi1,sayi2);
alert(sonuc);
JavaScript Anonim Fonksiyon Tanımlama
Bir fonksiyonu isim ile tanımlayabileceğimiz gibi isimsiz (ananonim) olarak da tanımlamak mümkündür.
Örnek: İsim ile Çarpım Fonksiyonu tanımlama
function carpim(x, y) {
return x * y;
}
Örnek: Çarpım fonsiyonunu anonim olarak tanımlama
var carpim =function (x, y) {
return x * y;
}
Not 1:Anonim fonksiyonlar fonksiyon alan bir çok javascript metodu ve özelliği için kullanılabilecek ideal tanımlama yöntemleridir.
Not 2:Anonim fonksiyon tanımlama jquery kavramını öğrenecekler için önemli bir adımdır. Jquery kütüphanesinde bir çok işlem anonim tanımlamalar şeklinde yürütülmektedir.
Örnek: Dizideki değerleri okuma örneği. Anonim fonksiyon ile
var dizi=[12,25,85,45,74];
/*forEach metodu dizideki her değer için okuma yapar*/
/*array.forEach(fonksiyon)*/
dizi.forEach(function(gelen){
alert(gelen);
});
JavaScript Arrow Fonksiyon /JavaScript Lambda Fonksiyon
C# programlama dili ile ilgilendiyseniz Lambda fonksiyon tanımlama kavramını az çok biliyorsunuz demektir.
EcmaScript 6 ile javasSript diline dahil olan Arrow Fonksiyonlar ile isimsiz bir fonksiyon tanımlayıp değer döndürme işlemini yapabilirsiniz.
Yazım Kuralı: En kapsamlı şu şekilde yazabilirsiniz.
(param1, param2, …, paramN) => { ifadeler }
Örnek 1: Basit bir kare alma fonksiyonunu arrow fonksiyon ile tanımlama
//tanımlama kısmı
var kareAl = x => x * x;
//tanımlanan fonksiyonun kullanımı
window.alert(kareAl(10));
Örnek 1: Klasik yöntemle tanımlama
//fonksiyonun tanımlanması
function kareAl(x)
{
return x*x;
}
//fonksiyonun kullanımı
window.alert(kareAl(10));
Örnek 2: Yukarıdaki anonim örneğini arrow fonksiyon ile şu şekilde tanımlayabiliriz.
var dizi=[12,25,85,45,74];
/*forEach metodu dizideki her değer için okuma yapar*/
/*array.forEach(fonksiyon)*/
dizi.forEach((eleman)=>alert(eleman));
Örnek 3: dizi içindeki 1,2,3 sayılarının karesini alma
var dizi = [1, 2, 3];
var kareal1 = dizi.map(x => x * x);
alert(kareal1);
// Klasik yöntemle
var kareal2 = dizi.map(function (x) { return x * x });
alert(kareal2);