28 Temmuz 2012 Cumartesi

Fonksiyon Parantez Blokları


Fonksiyon tipindeki verilerin çalışmasını incelediğimiz örneklerde parantezlerin sağladığını görüyoruz.Parantezler işlevsel olarak pek çok konuda
fayda sağlasa da, pek çok zaman yazılan kodun daha anlaşılır olması için blok oluşturmada kullanılır.Önce ne gibi işlevlerde kullandığımıza
gözatalım.Birinci örnek matematiksel işlemlerde gruplama yaparken kullanılan parantezler üzerine:
>>> 1+2*3
7
>>> (1+2)*3
9
 İkinci örnek, sayısal değerlerin ondalık kısmıyla methodların karışması problemine parantez çözümü:
>>> 1.toString()
missing ; before statement
[Break on this error] 1.toString()
javascript: with ... (line 1)
>>> 1.0.toString()
"1"
>>> (1).toString()
"1"
Gelelim üçüncü örneğe.Ecmascript'te her fonksiyon bloğu parantezler içine alınabilir.Ve elbette, parantez içine alınmış kod bloğuna çalıştırma
komutu gönderilebilir.Bu yöntem daha sade ve temiz görünen kodlar yazmayı sağlar, çünkü fonksiyonu yazdıktan sonra tanıtıcıyı çağırmaya gerek
duyulmaz.

Klasik yöntemle yazılan bir fonksiyonun çağırma işlemiyle, parantez bloğunun kodlarını karşılaştıralım:
>>> var merhaba = function(){
return "Merhaba"
}
>>> merhaba();
Merhaba
>>> (var merhaba = function(){
alert("Merhaba");
})();
"Merhaba"
İlk örnekte fonksiyonu tanımladık ve ardından tanıtıcısını kullanarak çalıştırdık, ikinci örnekteyse fonksiyonu parantez bloklarının içine alıp
çalıştırdığımız için, tanıtıcıyla çağırma yaptığımız satıra gerek kalmadı.Tahmin edeceğiniz üzere, aslında parantez bloklarını kullanırken tanıtıcı
kullanılmayabilir:
>>> (function(){
alert("Merhaba");
})();
"Merhaba"

...

 Bir sonraki konu Argümanlar

27 Temmuz 2012 Cuma

Fonksiyonlar


Fonksiyonlar
C tabanlı dillerde her iş veya alt iş fonksiyonlar tarafından yürütülür.Fonksiyonların genel kullanım şekli, argüman tünelinden veri gönderip, bilgi
çıkışı beklemektir.Genel yazılışı inceleyelim:
function(argümanlar){ return argüman }
Gönderilen argümanlar herhangi bir türde olabilir, sayı, dizi fonksiyon...Buradaki tek dikkat unsuru argümanların her birine ayrı tanıtıcı
belirlenmesidir.Argümanlar birden fazlaysa birbirlerinden virgülle ayrılmaları gerekir:
(argüman1,argüman2,argüman3...) 
ECMAScript'in kullandığımız sürümünde, argümanlar için PHP veya Python dillerinde olduğu gibi varsayılan değer atanamaz.Değer atanmayan
argümanların tanıtıcıları yine tanımlanır ancak "undefined" türünde olurlar.Argümanlar sadece tanımlandıkları fonksiyonda çalıştırılabilirler.Global
blokta tanımlanan değişkenlere fonksiyonlardan erişilebilir.
Bir fonksiyonda en son, fonksiyondan geriye değer döndürülmesini sağlayan "return" ifadesi çalıştırılır.Eğer bu ifadeden sonra fonksiyonun içeriği
bitmediyse, ECMAScript bu içeriği görmezden gelir.
Fonksiyonlar çeşitli biçimlerde tanımlanabilir, ilk olarak tanıtıcı ve eşit işareti kullanarak klasik biçimde tanımlayalım:
var islem = function(){}
Biraz daha pratik olan diğer yöntemdeyse pek çok programlama dilinden alışık olduğumuz biçimde tanımlıyoruz:
function islem(){}
Örnek olarak argüman tünelinden aldığı iki sayının toplamı geriye döndüren bir fonksiyon tanımlayalım: 
function topla(sayi1,sayi2){
return sayi1+sayi2
}
Bu biçimlerde tanımlamalar genelde tercih edilse de, bazen programın akışına göre şekillenmesi gereken fonksiyon tanımlamaya ihtiyaç
duyulur.Bu durumda tanıtıcıların program çalıştırılmadan önce belirlenmek zorunda olması, pek çok dilde rastladığımız bir kısıtlamadır.Fakat ECMAScript'in Function() nesnesi sayesinde, kod bloğu tanıtıcı string tipinde belirtilerek, programın akışına göre şekillenen fonksiyonlar
tanımlanabilmektedir:
var topla = new Function("sayi1","sayi2","return sayi1+sayi2")
Fonksiyonların atama işlemleri diğer veri türleriyle aynı olsa da, fonksiyona ulaşıp çalıştırma işlemi ayrı biçimdedir.Bir fonksiyonu çalıştırmak için
tanıtıcıyla beraber argüman tüneli kullanılır.Burada argüman tünelinin veri transferi yapıp yapmaması farketmez.Örnek olarak hazırladığımız topla
fonksiyonunu kullanalım:
var sonuc = topla(5,4)
9
"sonuc" değişkeni integer türünde 9 değerini aldı.
Örnekteki topla() fonksiyonunda hem bilgi girişi hem de bilgi çıkışı yapılıyor, şimdi bilgi girişi veya çıkışı yapılmayan bir örneği inceleyelim:
>>> var durum = 'Negatif';
>>> var durumuAyarla = function(){
durum = 'pozitif'
}
Bu örnekteyse programın global bloğunda "durum" adında bir değişken ve "durumuAyarla" adında, "durum" değişkeninin değerini string tipinde
"pozitif" değeriyle değiştiren bir fonksiyon oluşturuluyor.Çalıştırıp deneyelim;
>>> durumuAyarla()
undefined
>>> durum
'pozitif'

...
Bir sonraki konu Parantez Blokları 
 
 
 
 

İleri seviye javascript dersleri başlangıç


Bu dökümanda Javascript'in deneyselliğe dayanan doğasına uygun biçimde, web tabanlı program üretmenizi sağlayacak bilgileri vermeye
çalıştım. Özellikle üstünde durmanız gereken konu olan fonksiyonlarda, kitaplarda yeralmayan ileri teknik ve pratikleri anlattım.
Dökümandan iyi verim almak için, Rainbow9'dan faydalanabilirsiniz. Rainbow9, geçen yıl hazırladığım, javascript deneyleri yapmayı ve
web tabanlı programlar geliştirmeyi sağlayan bir programdır.İsterseniz Firefox'un Firebug eklentisinden de faydalanabilirsiniz.Rainbow9,
Firebug'ın aksine bazı mobil tarayıcılar dahil tüm tarayıcılarda kurulmaya gerek olmadan çalışır.
Rainbow9: http://www.rainbow9.org Firebug: http://www.getfirebug.com
Dökümanı okuyup bitirdikten sonra daha deneysel ve iyi tekniklerle kod yazacağınızı, kod standartınızı geliştireceğinizi umut ediyorum.
Sabır ve gayretlerinizin karşılığını almanız dileğiyle.

İçindekiler;

Giriş
Fonksiyonlar
  Parantez Blokları
  Argümanlar
    Fonksiyonlar İçin Method ve Alt Değişken Tanımlamak
  Apply
  Call
  Prototype
  Caller
  Bölüm Sonu Pratikleri
Diziler
Nesneler
İleri Seviye OOP