JavaScript Temelleri

Bölüm 2

Temel Bilgiler

2.9 - Mantıksal İşlemciler

Bölüm 2 Sayfa 11

Mantıksal işlemciler, mantıksal ifadelerin oluşturulması için kullanılır. İsimlerinin mantıksal olmasına karşın, bu işlemciler mantıksal değer döndürmezler. Döndürdükleri değer, işlenenlerin değeridir.

2.9.1 - Mantıksal VE (AND) İşlemcisi (&&)

Mantıksal VE işlemcisi, iki işlenenli bir işlemcidir. Eğer ve sadece eğer iki işlenenin ikisinin de değerleri true ise geriye true, aksi halde, yani işlenenlerden herhangibirisinin değeri false ise, geriye false sonucunu döndürür. Mantıksal olmayan değerlerin mantıksal değerler vermesi için aşağıdaki yönergede belirtilen yöntemler gözetilir :

Çok basit gibi görünen bu işlem, tüm programcılar için çok dikkat edilmesi gereken noktalar içerir. Çünkü bu işlemcinin işleyiş tarzı göründüğü kadar basit değildir.

Bu işlemci ilk olarak sol işleneni yorumlamaya çalışır. Eğer sol işlenenin değeri false değerine indirgenebiliyorsa, yani mantıksal false olmaktan başka, null, undefined, '' (veya""), veya aritmetik 0 olursa sol işlenenin değerini döndürerek işlevini tamamlar ve sağ işleneni gözardı eder. Burada dikkat edilmesi gereken çok şey vardır.

Herşeyden önce undefined, null, '' (veya""), veya aritmetik 0 değerlerine programcının isteği dışında da erişilebileceğini hatırlatalım. && işlemcisinin işlenenlerinin, mantıksal işleme girmeden önce, programda ulaştıkları değerler, son deece dikkatle kontrol edilmelidir. Heri iki işlenen de birer ifade olabilecekleri için bu inceleme çok detaylı ve yanıltıcı olabilir. Onun için her olasılığın hesaplanarak, işlemcilerin işleme girmeden önce doğruu değerler alacakları garanti edilmelidir. Özellikle, ifadenin aritmetik 0 değerine indirgenmesi, kontrol altına alınamaz ve verilere bağlıdır. Bu durumda, verilerde böyle bir olasılık varsa ve tüm sol işlenenin değerinin false olarak belirlenmesi istenmiyorsa, en iyi yol, bu işlemcinin kullanımından vazgeçilmesidir. Diğer değerler için de aynı şey tekrarlanabilir.

Bundan başka sol işlenenin değeri false olduğunda işlemin bitirilmesi, değerlendirilmeyi bekleyen sağ işlenen için hayal kırıklığına yol açabilir. Sağ işlenenin değerlendirme beklyen hiç bir işlemi gerçekleşmeyebilir. Örnek olarak,

(x === y) && (('0.16' * 1 ) === z)
		

işleminde, sol işlenenin değeri false ise sağ işlenen hiç değerlendirilmeyecektir. Yani, '0.16' sayıya dönüştürülebilen sözel değer, sağ işlenende öngörüldüğü gibi, sayısal ilkel tipe dönüştürülmeyecektir. Programın ileriki aşamalarında bu dönüşüm olmuş gibi kod yazılırsa bu kod hata verebilecektir.

Yukarıdaki örnekte görüldüğü gibi, (&&) işlemcisinin sağ işlenenine, hiçbir kritik kod konulmamalıdır. Daha da iyisi bu işlemcinin her iki işlenenini de konulacak ifadeler, gelişmesi tamamlanmış ve bu işlemden bir beklentisi olmayan terimlerden oluşmalıdır. Yani, (&&) işlemcisi bir tür işaret feneri gibi salt bir mantıksal işlemci olarak uygulanmalıdır.

2.9.2 - Mantıksal VEYA (OR) İşlemcisi (||)

Mantıksal VEYA işlemcisinin işletişi bir önceki işlemci gibi basit gibi görünmesine karşın yine karmaşık ve yanıltıcı olabilmektedir. Mantıksal VEYA işlemcisi, iki işlenenli bir işlemcidir ve işlenenlerden herhangibirisi true ise bu değeri, işlenenlerden her ikisi de false olarak değerlendiriliyorsa false değerini döndürür. İşlenenlerin değerlendirilmesi, bir önceki işlemci ile aynıdır.

Bu işlemci de aynen bir önceki gibi önce, sol işleneni değerlendirir. Eğer değer true ise, bu değeri döndürür ve sağ işlemci ile ilgilenmeden işlemi sonlandırır. Sağ işlenen ancak sol işlenenin false değerine indirgenmesi ile değerlendirilir. Yine bir önceki işlemci gibi sağ işlenene yan etkisi olabilecek hiçbir ifadenin konulmaması uygun olur.

2.9.3 - Mantıksal Olumsuzluk (NOT) İşlemcisi (!)

Mantıksal olumsuzluk işlemcisi tek işlenenli bir ifadedir ve işlenenin değerini tersine çevirir. Eğer işlenenin değeri true veya bu değere indirgenebilen bir ifade ise değeri false değerine döndürülür. Eğer işlenenin değeri false veya bu değere indirgenebilen bir ifade ise değeri true değerine döndürülür.

Mantıksal olumsuzluk işlemcisi, bir ifadeyi mantıksal değere açık olarak dönüştürme aracı olarak kullanılabilir. Aşağıda bu işlemlerin sonucunu içeren tablolar görülmektedir.

Mantıksal İlkel Veri Tipine Açık Dönüştürme
!null !undefined !NaN !0 !1 !5.7 !'0.16' !'Aladağ'
true true true true false false false false

Bu işlemci, !!şeklinde ardışık olarak da uygulanabilir. Bu durumda, tabloda görülen sonuçların tersi döndürülür. Örnek olarak, !!0 işleminin sonucu false olacaktır.

2.10 - Özel İşlemciler

Javascript programlama dilinde çeşitli özel işlemciler bulunmaktadır. Bunların herbirinin değişik işlevleri vardır. Bu işlemcilerden, typeof, delete ve void işlemcileri, daha önce incelenmişti. Geri kalanları da burada incelemeye çalışacağız.

2.10.1 - Satırıçi Ardışık Çoklu İşlemler İşlemcisi (Virgül İşlemcisi)

Bu işlemci, aynı satırdaki ifadeleri ardışık olarak çalıştırır. Sözdizimi,

ifade1, ifade2, ...
		

şeklindedir. Burada ifade1 ve ifade2 her türlü ifadeyi kapsar. Örnek:

		var d = 9, p = 4;
		

Bu işlemci, program yazımında büyük kolaylık sağlamaktadır.

2.10.2 - Nesne oluşturma İşlemcisi (new İşlemcisi)

new İşlemcisini önceden de uygulamalarda kullandık. Bu bir tekli işlemcidir. Kullanımı,

new YapılandırıcıFonksiyon([argümanlar])

şeklindedir. Yapılandırıcı fonksiyonlar, Object(), Number(), String(), Boolean() gibi öntanımlı dört yapılandırıcı yanında, kullanıcı tanımlı yapılandırıcılar da olabilir. Yapılandırıcı fonksiyonlar, genel yapılaraı ile bir fonksiyondur ve argümanları olabilir veya olmayabilir. Örnek olarak,

a = new Object();

şeklinde yeni bir öntanımlı Object nesnesi örneği yaratan Object() öntanımlı yapılandırıcı fonksiyonun bir argümanı yoktur. Bu işlem, prensip olarak, boş bir öntanımlı Object nesnesi örneği veya başka bir ismi ile boş bir nesne literali yaratır ve referansını a değişkenine atar. Bu işlem prensip olarak,

a
= [];

işlemi ile eş anlamlıdır ve sonuncu yazılım daha uygun karşılanmaktadır.

2.10.3 - Nesne Özelliklerine Erişim İşlemcisi (Nokta İşlemcisi)

Nesnelerin değer ve fonksiyon özelliklerine (metotlarına) erişim için nokta işlemcisi kullanılır. Kullanımı,

window.document.writeln('Doğum Günü'); 
		

şeklindedir.

Valid XHTML 1.1