Anasayfa > Programlama > Javascript / DHTML / Ajax > JavaScript İfadeleri ve Operatörler - 3
Makaleye verilen puanlar Makaleye verilen puanlar Makaleye verilen puanlar Makaleye verilen puanlar

JavaScript İfadeleri ve Operatörler - 3




JavaScript operatörleri konusuna bir önceki yazımızda kaldığımız yerden devam ediyoruz...

String Operatörleri (String Operators)
JavaScript'te toplama operatörü(+), aritmetik işlemlerin yanısıra iki ya da daha fazla karakter dizisini(string) birleştirmek için de kullanılır. Stringlerin birleştirilmesi sonucunda yeni bir string elde edilmektedir; örneğin "Ne oldu sana, " ve "ne oldu böyle?!" ifadeleri birleştirildiğinde "Ne oldu sana, ne oldu böyle?!" şeklinde bir string üretilir.

Stringleri birbirine eklemek için birleşik atama operatörü de kullanılabilir. Değeri "Benim canım" olan strDegisken değişkeni strDegisken += " stringim" şeklinde bir işleme sokulduğunda "Benim canım stringim" değerini alacaktır.

Özel Operatörler (Special Operators)

  • Koşullu Operatör (Conditional Operator)
    Koşullu operatör üç ifade üzerinde işlem yapan tek JavaScript operatörüdür. Yazım şekli :

    koşul ? değer1 : değer2

    Eğer "koşul" ifadesi doğru(true) ise "değer1" değeri, yanlış(false) ise "değer2" değeri geri döndürülür. Koşullu operatörü bir çok durumda "if-else" yerine kullanabilirsiniz; hatta bu yararlı bir yazım alışkanlığıdır. Örneğimizi inceleyelim :


     if(yas >= 18) girisMesaji = "Hoşgeldiniz!";
     else          girisMesaji = "Büyü de gel çocuk, büyü de gel...";

    şeklindeki bir ifadeyi koşullu operatörü kullanarak yazmak isteseydik;


     girisMesaji = (yas >= 18) ? "Hoşgeldiniz" : 
                                 "Büyü de gel çocuk, büyü de gel..."

    ifadesini kullanabilirdik. Bu ifadede "yas" değişkeninin değeri 18 sayısından büyükse ya da 18 sayısına eşitse, "girisMesaji" değişkenine ilk string değer, yani "Hoşgeldiniz"; "yas" değişkeninin değeri 18 sayısından küçükse, "Büyü de gel çocuk, büyü de gel..." string değeri atanır.

  • Virgül Operatörü (Comma Operator)
    Virgül operatörü, basitçe her iki ifadeyi de değerlendirir ve ikinci ifadenin değerini geri döndürür. Bu operatör öncelikli olarak for döngüsü içinde, birden çok sayaç değişkeninin değerini döngü boyunca yenilemek için kullanılır. Aşağıdaki örneğe bakalım :

     

    for(var i = 0, j = 1; i <= 8; i += 2, j += 2)
    	document.writeln(i + " * " + j + " = " + (i * j) + "<br>");

    Örneğimizdeki for döngüsü, 0'dan 9'a kadar olan ardışık çift sayılarla tek sayıları çarparak sonucu ekrana yazar. Çift sayılar için "i" değişkeninin değeri, tek sayılar için "j" değişkeninin değeri alınmaktadır. Bu döngü değişkenleri, aralarına virgül operatatörü konularak aynı ifade içinde belirtilmişlerdir ve döngünün her adımında ikisi birden güncelleştirilmektedir.

  • delete Operatörü (delete)
    delete operatörü bir nesneyi, nesne özelliğini ya da bir dizi içerisinde sırası belirtilmiş bir öğeyi silmek için kullanılır.

    delete nesneAdı
    delete nesneAdı.özellik
    delete nesneAdı[öğe-indeksi]
    delete özellik // sadece bir "with" ifadesi içinde


    delete
    operatörünü kullanarak ancak dolaylı olarak bildirilmiş değişkenleri silebiliriz; "var" ile bildirilen değişkenler bu operatör aracılığıyla silinemez. Silme işlemi başarılı olursa "true" değeri, silme işlemi gerçekleştirilemiyorsa "false" değeri üretilir. Silme işlemi sonucunda nesne ya da özellik undefined, yani tanımsız duruma gelmektedir.


     var kesinBildirim    = 27;
     dolayliBildirim      = 28;
     stringNesnesi        = new String();
     stringNesnesi.s1     = "Silinecek nesne özelliği";
    

    delete kesinBildirim; // false; değişken "var" ile bildirilmiş delete dolayliBildirim; // true; değişken dolaylı bildirilmiş delete stringNesnesi.s1 // true; kullanıcı tanımlı nesne özelliği delete stringNesnesi // true; kullanıcı tanımlı nesne
    Dizi öğelerini silmek
    Bir dizi(array) öğesini sildiğimizde dizinin uzunluğu değişmez. Örneğin dört öğeye sahip "ad" dizisinin ad[2] ve ad[3] indeksleriyle belirtilmiş öğeleri silinse bile ad'ın uzunluğu 4 olarak kalacaktır, çünkü ad[2] ve ad[3] undefined(tanımsız) öğeler haline gelmiştir.

    delete operatörüyle kaldırılan dizi öğeleri, dizi içinde yer kaplamazlar. Örneğimizi inceleyelim :

     

    uyeler = new Array("sahin", "redial", "axion", 
                        "xXx", "fixman", "sessiztetik");
    
     delete uyeler[4]; // "fixman" öğesi diziden kaldırılır.
    

  • in Operatörü (in)
    in operatörü, özellik belirtilen nesnenin içindeyse "true" değer üretir. Yazım şekli :

    ozellikAdiSiraNumarasi in nesneAdi

    Aşağıdaki örnekte in operatörünün nasıl kullanıldığını görebilirsiniz :

     

    // diziler :
    
     uyeler = new Array("sahin", "redial", "axion", 
                        "xXx", "fixman", "sessiztetik");
     0 in uyeler;        // true; sıfırıncı indeks "sahin"
     5 in uyeler;        // true; beşinci indeks "sessiztetik"
     7 in uyeler;        // false; yedinci indeks bulunmuyor
     "asa" in uyeler;    // false; "asa", uyeler nesnesinde yok
     "fixman" in uyeler; // true; "fixman", uyeler nesnesinde var
    
     // öntanımlı nesneler :
    
     "PI" in Math        // true; "PI", Math nesnesinde var
    
     // kullanıcı tanımlı nesneler :
    
     yazi = {tur : "JavaScript", konu : "JavaScript Operatörleri",
             yazar : "fixman"};
     "yazar" in yazi     // true; "yazar", yazilar nesnesinde var 

  • instanceof Operatörü (instanceof)
    instanceof, nesne belirtilen nesne tipindeyse "true" değer üretir. Yazım şekli :

    nesneAdı instanceof nesneTipi

    instanceof
    operatörü, bir nesne tipini çalışma anında(runtime) doğrulatmak isterseniz işinize yarayabilir. Aşağıdaki örnekte bu operatörün nasıl kullanıldığını görebilirsiniz :

     

    tarih = new Date(2003, 9, 20);
     if(tarih instanceof Date){
            // true; tarih, Date tipindedir.
    	// koşul sağlandığı için bu "if" bloğuna 
    	// yazacağınız ifadeler işlerlik kazanır.
     }
    

  • new Operatörü (new)
    new operatörünü, kullanıcı tanımlı bir nesne ya da ön-tanımlı nesne tiplerinden birinin(Array, Boolean, Date, Function, Image, Number, Object, Option, RegExp, String) örneğini yaratmak için kullanabilirsiniz. Ayrıca sunucu(server) üzerinde DbPool, Lock, File, SendMail nesneleri de kullanılmaktadır.
    (Not : Acele etmeyin; hepsini göreceğiz!)

    Yazım şekli :

    nesneAdı = new nesneTipi( parametre1 [,parametre2] ... [,parametreN])

  • this Operatörü (this)
    this anahtar sözcüğü, geçerli(güncel) nesneye işaret eder. Genel olarak bu nesne bir method içerisinden çağrılmaktadır. this aşağıdaki gibi yazılır :

    this[.ozellikAdi]

    Bu anahtar sözcüğün nasıl kullanıldığını anlamak için örneklere göz atalım...

    İlk örneğimizdeki mesajGoster fonksiyonu çağrıldığında nesnenin "value" özelliğini değerlendirip, bu özelliğin sayısal değerine göre kullanıcıya bir mesaj gösterir :

     

    function mesajGoster(nesne, dusukDeger, yuksekDeger){
    	if(nesne.value < dusukDeger)
    		alert("Daha çok küçüksün yavrum!");
    	if(nesne.value >= yuksekDeger)
    		alert("Size baba diyebilir miyim?");
     }
    

    Peki fonksiyon parametrelerinde adı "nesne" olarak geçen nesnemiz ve diğer iki değişkenimiz nerede bildirildi? İşte bu noktada this devreye giriyor. Aşağıdaki HTML kodu ile yaratılan "input" nesnesi "onChange" olay tutucusunun durumuna bağlı olarak fonksiyonumuzu çağırıyor. Metin kutusuna herhangi bir değer girerek içeriğini değiştirmek bu olayın gerçekleşmesi için yeterlidir. this anahtar sözcüğü ile form öğesi, fonksiyona "nesne" parametresi olarak geçiliyor. Diğer iki sayısal parametre de değişkenlere aktarılmakta...

     

    <input type="text" name="yasKutusu" size=2 
     onChange="mesajGoster(this, 18, 50);">
    

    İkinci örneğimizde ise, this geçerli nesneyi içinde barındıran "form" özelliğine işaret etmektedir. Metin kutusuna değer girilirse formun "jsButton" adındaki düğme öğesi aktif duruma gelir; bu öğeye tıklandığında(yani onClick olay tutucusu devreye girdiğinde) ise form bilgileri "action" ile tanımlanmış olan sayfaya gönderilmektedir(submit) :
     

    <form name="jsForm" method="post" action="">
     <input type="text" name="jsText"
     onChange="this.form.jsButton.disabled = false;"> 
     <input type="button" value="Onayla" name="jsButton"
     onClick="this.form.submit(); DISABLED">
     </form>
    

  • typeof Operatörü (typeof)
    typeof operatörü iki şekilde kullanılabilir :

    1. typeof ifade
    2. typeof (ifade)


    Bu operatör, sağına yazılan ifadenin tipini string olarak belirtir. İfade değişken, anahtar sözcük, string ya da herhangi tipte bir nesne olabilir. İfadeleri parantez içine almak isteğe bağlıdır.

    Aşağıdaki değişken bildirimlerini yaptığınızı varsayalım :

     

    var canimFonksiyonum = new Function();
     var birCevizNetUyesi = "Ansugo";
     var herhangiBirSayi  = 31;
     var dunDundur        = new Date();
    

    typeof operatörü bu değişkenlere uygulandığında sırasıyla şu sonuçlar elde edilir :

     

     typeof canimFonksiyonum // "function"
     typeof birCevizNetUyesi // "string"
     typeof herhangiBirSayi  // "number"
     typeof dunDundur        // "object"
    
     typeof bugunBugundur    // "undefined"; değişken tanımlı değil!
    

    true ve null anahtar sözcükleri için...

     typeof true             // "boolean"
     typeof null             // "object"
    

    Bir sayı ya da karakter katarı için..
     

     typeof 27               // "number"
     typeof "27"             // "string"
    

    Özellik değerleri için...


     typeof document.title   // "string"
     typeof screen.width     // "number"
     typeof Math.PI          // "number"

  • void Operatörü (void)
    void operatörü de typeof operatörü gibi iki şekilde yazılabilmektedir :

    void ifade
    void (ifade)


    void
    operatörü, sağına yazılan ifadeyi değerlendirirken herhangi bir değer döndürmez. Parantezler isteğe bağlı olarak kullanılır, ancak ifadeleri parantez içine alarak yazmak yararlı bir yazım tarzıdır.

    Bir JavaScript ifadesini HTML bağlantısı olarak belirtmek için void operatörünü kullanabilirsiniz; bağlantıya tıklandığında, void(0) "undefined" değer üretir ve bu da JavaScript'te herhangi bir etkiye yol açmaz.

     

    <a href="javascript:void(0);">Bağlantısız bağlantı</a>
    

    Yukarıdaki HTML kodu, bağlantıyı boş geçmek için "#" işaretini kullanan tasarımcılara daha etkili bir çözüm sunmaktadır. Aşağıdaki örneğimizde ise bağlantıya tıklandığı zaman ilgili form işlerlik kazanmaktadır :


     <a href="javascript:void(document.formAdi.submit());">
     Form bilgilerini göndermek için tıklayın</a>
    

Operatör Öncelikleri

Operatör öncelikleri, bir JavaScript ifadesi değerlendirilirken, operatörlerin ifadeye hangi sırada uygulanacağını belirtir. Parantez kullanarak JavaScript'in bu önceliklere önem vermemesini sağlayabiliriz. Aşağıdaki tabloda, operatör öncelikleri en düşük öncelikten en yüksek önceliğe doğru sıralanmıştır.

Operatör türüOperatörler
virgül(comma),
atama= += -= *= /= %= <<= >>= >>>= &= ^= |=
koşul?:
mantıksal-veya||
mantıksal-ve&&
bit düzeyinde-veya|
bit düzeyinde-özel veya^
bit düzeyinde-ve&
eşitlik== != === !==
ilişki< <= > >= in instanceof
bit düzeyinde öteleme<< >> >>>
ekleme/eksiltme+ -
çarpma/bölme* / %
etkisiz duruma getirme/arttırma! ~ - + ++ -- typeof void delete
çağırma/örnek yaratma() new
üyelik. []


Sonunda "operatörler" konusuna noktayı koyma anı geldi çattı... Ben bu uzun yazıyı keyifle yazdım, umarım siz de okumaktan keyif almışsınızdır. Tabii daha önümüzdeki yolu aşmak için zamana gereksinimimiz var; JavaScript dünyası pek de küçük bir evren sayılmaz!

Yazı dizimizin takipçisi olmaktan vazgeçmemenizi öneriyorum. Ayrıca Ceviz.Net forumunda benim de aralarında olduğum büyük bir üye topluluğu, JavaScript ile ilgili olsun ya da olmasın tüm sorularınızı yanıtlamak için sırada bekliyor :)

FixMan


Bu makale hakkında ek bilgi eklemek için buraya tıklayınız

Bu makalenin yazar yada kaynağını bildirmek için tıklayınız.

Digg this Post! Add Post to del.icio.us Bookmark Post in Technorati Furl this Post!
Eklenme tarihi: 8-9-2006  Okunma: 2022

Bu Makaleye Verilen Puan:    Makaleye verilen puanlar Makaleye verilen puanlar Makaleye verilen puanlar Makaleye verilen puanlar
Bu Makaleye Puan Ver  

Bölüm Başlık Kullanıcı Yorumları


Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
Reklam Netinternet
Bazı hakları saklıdır: İçeriğin editör ve yazarlarımız tarafından oluşturulan kısımları ve site tasarımının hakkı saklıdır.  Bu sayfa en iyi 1280x1024 ve 1024x768 çözünürlükte izlenir.
Powered by BilgiPortal v2.2
Resim Emlak Canlı TV Firma Rehberi Firma Ekle Estetik çiçek Makale izafet Download indir ADSL Teknik Servis Yorumlar Müzik