ECMAScript Boolean işlevleri

Boolean işlevleri çok önemlidir, bu da program dilinin düzgün çalışmasını sağlar.

Boolean işlevleri üç türdür: NOT, AND ve OR.

ToBoolean işlemi

Farklı mantıksal işlevler hakkında öğrenmeden önce, bizi ECMAScript-262 v5 normunda tanımlanan ToBoolean işlemi hakkında bilgi verin.

Abstrakt işlem ToBoolean, parametresini aşağıdaki kurallara göre mantıksal değere dönüştürür:

Parametre türü Sonuç
Undefined false
Null false
Boolean Sonuç girdi parametresine eşittir (değiştirilmez)
Number Eğer parametre +0, -0 veya NaN ise sonuç false'dur; aksi takdirde true'dur.
String Eğer parametre boş bir dize ise sonuç false'dur; aksi takdirde true'dur.
Object true

Lojik NOT işlevi

ECMAScript'te, mantıksal NOT işlevi, C ve Java'daki mantıksal NOT işlevi ile aynıdır ve hepsi, hayır işareti (!) ile temsil edilir.

Mantıksal OR ve mantıksal AND işlevleri ile farklı olarak,Mantıksal NOT işlevi, her zaman Boolean değer döndürür.

Mantıksal NOT işlevinin davranışı şu şekildedir:

  • Eğer işlemci nesne ise, false döndürür
  • Eğer işlemci sayı 0 ise, true döndürür
  • Eğer işlemci 0 dışındaki herhangi bir sayı ise, false döndürür
  • Eğer işlemci null ise, true döndürür
  • Eğer işlemci NaN ise, true döndürür
  • Eğer işlemci undefined ise, hata meydana gelir

Genellikle bu işlev, döngüleri kontrol etmek için kullanılır:

var bFound = false;
var i = 0;
while (!bFound) {
  if (aValue[i] == vSearchValues) {
    bFound = true;
  } else {
    i++;
  }
}

Bu örnekte, Boolean değişkeni (bFound) bulma işlemi başarılı olup olmadığını kaydetmek için kullanılır. Veri öğesi bulunduğunda, bFound true olarak ayarlanır, !bFound false olur, bu da döngüden çıkmanın anlamına gelir.

ECMAScript değişkenlerinin Boolean değerlerini değerlendirmek için, mantıksal NOT işlevi de kullanılabilir. Bunu yapmak için bir satırda iki NOT işlevi kullanmanız gerekir. Herhangi bir işlemci türü ne olursa olsun, ilk NOT işlevi Boolean değeri döndürür. İkinci NOT, bu Boolean değeri negatif sonuçlandırarak, değişkenin gerçek Boolean değerini verir.

var bFalse = false;
var sRed = "red";
var iZero = 0;
var iThreeFourFive = 345;
var oObject = new Object;
document.write("bFalse'in mantıksal değeri " + (!!bFalse));
document.write("sRed'in mantıksal değeri " + (!!sRed));
document.write("iZero'in mantıksal değeri " + (!!iZero));
document.write("iThreeFourFive'in mantıksal değeri " + (!!iThreeFourFive));
document.write("oObject'un mantıksal değeri " + (!!oObject));

Sonuç:

bFalse'in logic değeri false'dur
sRed'in logic değeri true'dur
iZero'in logic değeri false'dur
iThreeFourFive'in logic değeri true'dur
oObject'in logic değeri true'dur 

Logic AND işleçisi

ECMAScript'te, logic AND işleçisi iki ve işaretiyle (&&) temsil edilir:

Örnek olarak:

var bTrue = true;
var bFalse = false;
var bResult = bTrue && bFalse;

Aşağıdaki doğru değer tablosu, logic AND işleçinin davranışını açıklamaktadır:

İşletim sayısı 1 İşletim sayısı 2 Sonuç
true true true
true false false
false true false
false false false

Logic AND hesaplamasının operasyonelleri herhangi bir tür olabilir, sadece Boolean değerler değil.

Bir operasyonel temel Boolean değeri değilse, logic AND hesaplaması belirli bir Boolean değeri döndürmeyebilir:

  • Bir operasyonel nesne, diğeri Boolean değer ise, bu nesne döndürülür.
  • İki operasyonel her ikisi de nesne ise, ikinci nesne döndürülür.
  • Bir operasyonel null ise, null döndürür.
  • Bir operasyonel NaN ise, NaN döndürür.
  • Bir hesaplanan sayı tanımlanmamışsa, hata meydana gelir.

Java'daki logic AND hesaplaması gibi, ECMAScript'teki logic AND hesaplaması da basit hesaplamadır, yani ilk operasyonel sonuç belirlediğinde ikinci operasyonel hesaplanmaz. Logic AND hesaplaması için, ilk operasyonel false ise, ikinci operasyonel ne olursa olsun sonuç true olamaz.

Aşağıdaki örneği göz önünde bulundurun:

var bTrue = true;
var bResult = (bTrue && bUnknown);	// Hata
alert(bResult);			// Bu satır çalışmayacak

Bu kod, logic AND hesaplaması sırasında hata meydana getirecektir, çünkü değişken bUnknown tanımlanmamıştır. Değişken bTrue'in değeri true, çünkü logic AND hesaplaması bUnknown değişkenini hesaplamaya devam edecektir. Bu, bUnknown'in değeri undefined olduğu için hata meydana getirecektir, çünkü bu değer logic AND hesaplamasında kullanılamaz.

Bu örneği değiştirirseniz, ilk sayıyı false olarak ayarlayarak hata meydana gelmez:

var bFalse = false;
var bResult = (bFalse && bUnknown);
alert(bResult);			// "false" çıktısı

Bu kod parçasında, betik logic AND hesaplamasının döndürdüğü değeri çıktıya verecektir, yani dize "false". Değişken bUnknown'in değeri undefined ise, ilk operasyonelin değeri false olduğu için hesaplanmayacaktır.

İpucu:}Mantıksal AND işlevsel işaretçisini kullanırken, bu basit hesaplama özelliğini unutmamak gerekir.

Mantıksal OR işlevsel işaretçisi

ECMAScript'teki mantıksal OR işlevsel işaretçisi, Java'daki ile aynı şekilde, çift dikey çizgi (||) ile temsil edilir:

var bTrue = true;
var bFalse = false;
var bResult = bTrue || bFalse;

Aşağıdaki doğru değer tablosu, mantıksal OR işlevsel işaretçisinin davranışını açıklamaktadır:

İşletim sayısı 1 İşletim sayısı 2 Sonuç
true true true
true false true
false true true
false false false

Mantıksal AND işlevsel işaretçileri ile benzer şekilde, bir hesaplanan sayı Boolean değeri değilse, mantıksal OR işlevsel işaretçisi belirli bir Boolean değeri döndürmez:

  • Bir hesaplanan sayı nesne ise ve nesnenin solundaki hesaplanan sayılar tümü de false ise, o nesne döndürülür.
  • İki hesaplanan sayı her ikisi de nesne ise, ilk nesne döndürülür.
  • Son hesaplanan sayı null ise ve diğer hesaplanan sayılar false ise, null döndürülür.
  • Son hesaplanan sayı NaN ise ve diğer hesaplanan sayılar false ise, NaN döndürülür.
  • Bir hesaplanan sayı tanımlanmamışsa, hata meydana gelir.

Mantıksal AND işlevsel işaretçileri ile aynı şekilde, mantıksal OR işlevsel işaretçileri de basit bir hesaplama işlevlidir. Mantıksal OR işlevsel işaretçisi için, ilk hesaplanan sayı true ise, ikinci hesaplanan sayı artık hesaplanmaz.

Örnek olarak:

var bTrue = true;
var bResult = (bTrue || bUnknown);
alert(bResult);			//"true" çıktısı alınır

Önceki örnekle aynı şekilde, değişken bUnknown tanımlanmamıştır. Ancak, değişken bTrue'nun true değeri olduğu için bUnknown hesaplanmaz, bu yüzden "true" çıkışı alınır.

bTrue'ı false olarak değiştirirseniz, hata meydana gelir:

var bFalse = false;
var bResult = (bFalse || bUnknown);	//Hata meydana gelir
alert(bResult);			//Bu satır çalışmayacak