Bir fonksiyon ile Javascript programının diğer işlemlerinin ilk ilişkisi fonksiyona bir değer gönderme ve ondan bir değer almaktır. Bir fonksiyon, yaptığı işin sonucu olarak, kendisini göreve çağıran komuta veya fonksiyona kendi adıyla bir değer
verebilir. Bir örnek üzerinde düşünmeye başlayalım. Ziyaretçinizden telefon numarasını yazmasını istiyorsunuz. Ziyaretçi de sayfada bir INPUT kutusuna veya PROMPT diyalog kutusuna telefon numarasını yazıyor. Bu numarayı, sayfada başka bir programda veya bölümde kullanmadan önce, gerçekten doğru yazılıp yazılmadığını irdelemek istiyorsunuz. Ziyaretçinin verdiği telefon numarasını bir fonksiyona havale edebilirsiniz; bu fonksiyon telefon numarası arzu ettiğimiz biçimde yazılmışsa olumlu, yazılmamışsa olumsuz yanıt verebilir. Bütün yapacağımız şey, ziyaretçiden alacağımız bilgiyi, bu fonksiyona argüman olarak geçirmekten ibaret; fonksiyonun sonuç olarak verdiği değer doğru ise işleme devam edeceğiz, değilse ziyaretçiyi uyararak, doğru bilgiyi girmesini isteyeceğiz.
Şimdi düz yazı programınızda şu kodu yazıp, fonksiyon1.htm adıyla kaydedin:
<HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=windows-1254"> <TITLE>Javascript'te Fonksiyon</TITLE> <SCRIPT LANGUAGE="Javascript1.2"> <!-- Javascript kodunu eski sürüm Browserlardan saklayalim // fonksiyonu tanımlayalım: function dogruMu(numara) { var karakter = null var durum = true if(numara.length != 13) { durum = false // durum değişkenin değeri değişti } else { for(var i = 0; i <= 12; i++) { karakter = numara.charAt(i) if ( i == 0 && karakter == "(" ) continue //birinci karakter parantez ise başa dön else //değilse devam et if( i == 4 && karakter == ")" ) continue //beşinci karakter parantez ise başa dön else //değilse devam et if( i == 8 && karakter == "-" ) continue //dokuzuncu karakter çizgi ise başa dön else //değilse devam et if( parseInt(karakter,10) >= 0 && parseInt(karakter,10) <= 9 ) continue //1, 4 ve 9 dışındaki karakter sayı ise devam et else //değilse dur { durum = false //değişkenin değeri değişti break //fonksiyon kesildi } } } return(durum) //çağıran işleme durum?un değeri bildirildi } // --> </SCRIPT> </HEAD> <BODY> <PRE> <SCRIPT LANGUAGE = "Javascript1.2"> <!-- Javascript kodunu eski sürüm Browserlardan saklayalim // Ziyaretciden telefon numarasını isteyelim numara = prompt("Lütfen telefon numaranızı yazınız [(333)111-2222 gibi]", "") if(dogruMu(numara)) { document.writeln("Telefon numaranızı verdiğiniz için teşekkür ederiz.") document.writeln("Müşteri temsilciniz size ilk fırsatta arayacaktır") } else { document.writeln("Numaranızı örnekte görüldüğü şekilde yazmanızı rica ederiz") } // --> </SCRIPT> </PRE> </BODY> </HTML>
Bu sayfada, önce “if(dogruMu(numara))” şeklindeki ifadeye dikkat edelim. Javascript, bu noktada “dogruMu” fonksiyonu çağıracak, bunu yaparken de fonksiyona “numara” adı altında bir değer geçirecektir. (Bu değeri, çeşitli şekillerde elde edebiliriz; bir Form nesnesinde INPUT kutusundan alabileceğimiz gibi, burada olduğu gibi PROMPT diyalog kutusuyla da alabiliriz.) Fonksiyondan bütün beklediğimiz “if” sorgulamasına “true” (doğru) veya “false” (yanlış) şeklinde bir karşılık vermesidir. Yukarıda “if” döngüsünü ele alırken, yanıtın doğru olması halinde ilk bölümdeki, yanlış olması halinde “else” bölümündeki komutların uygulandığını görmüştük. Şimdi burada dogruMu() fonksiyondan “true” sonucu dönerse, sayfaya teşekkür mesajı ve bilgi notu iki satır halinde yazılacak; “false” sonucu dönerse, ziyaretçi numarayı doğru yazması için uyarılacaktır. (Bu örnekte program bu noktada kesiliyor, oysa gerçek hayatta bu noktada ziyaretçiye bilgi girme aracının yeniden sunulması gerekir.)
Şimdi fonksiyona dönebiliriz. dogruMu() fonksiyonu, kendisine görev verecek işlemden veya fonksiyondan mutlaka bir argüman verilmesini istiyor. “numara” adıyla işleme sokulacak olan bu argüman, fonksiyon için bir nesnedir. Bu arada fonksiyonumuz kendi işleri için bir değişken oluşturuyor (karakter), ve içine boş değer koyuyor (null); daha sonra kendisinden beklenen değeri içine koyacağı bir değişken oluşturuyor ve içine varsayılan değer olarak “true” kelimesini koyuyor. Aksi kanıtlanmadığı taktirde, fonksiyonu göreve çağıran “if” döngüsüne bu değer bildirilecektir.
Fakat önce fonksiyonun gerçekten kendisine verilen bilgilerin, arzu edilen biçime uygun olup olmadığını sınaması gerekir. Bu bilgiyi tutan “numara” nesnesi, nesne olduğu için bazı özelliklere sahiptir; bu özelliklerden biri de uzunluğudur. Önce bu uzunluğun 13 karakter olup olmadığına bakıyoruz. Ziyaretçi, telefon numarasını yazdığı halde parantezleri veya kesme çizgisini unuttuysa, verdiği bilgilerin uzunluğu 13 karakterden az olacaktır, yani “numara.length” 13 olmayacak, “durum” değişkenin değeri “false” olarak değiştirilecektir. Yok, numaranın karakter sayısı 13 ise, fonksiyonumuz 13 karakteri, bir “for” döngüsü çerçevesinde tek tek irdelemeye başlayacaktır.