ECMAScript بولین آپریٹروں

بولین آپریٹروں بہت اہم ہیں، وہ پروگرام زبان کی کارکردگی کا ممکن بناتے ہیں。

بولین آپریٹروں کی تین طرح ہیں: NOT، AND اور OR。

ToBoolean عمل

بعد از ان کہ مختلف منطقی آپریٹروں سے پہلے، ہم اپنے آپ میں ECMAScript-262 v5 معیار میں توضیح دیئے گئے ToBoolean عمل کو معاملہ بنائیں。

مجرد عمل ToBoolean اس کے پارامتر کو جدول میں دیئے گئے اصولوں کے مطابق بولین وقوع میں تبدیل دیتا ہے:

پارامتر کی نوعیت نتیجه
undefined false
null false
بولین نتیجہ ورودی پارامتر کو مساوی ہوگا (تبدیل نہیں کیا جائے گا)
نمبر اگر پارامتر +0، -0 یا NaN ہو، تو نتیجہ false ہوگا؛ درغیراین، true ہوگا。
رشته اگر پارامتر خالی رشته ہو، تو نتیجہ false ہوگا؛ درغیراین، true ہوگا。
آبجیکٹ true

逻辑 NOT آپریٹر

ECMAScript میں، logic NOT آپریٹر کا کام کردار C اور Java میں کی طرح ہوتا ہے، دونوں میں بھی ناقص آئیکن (!) سے نمائش کیا جاتا ہے.

logic OR اور logic AND آپریٹروں سے متضاد،logic NOT آپریٹر کی جانب سے برتا جاتا ہوا یقیناً Boolean کی ارزش ہوتی ہے.

logic NOT آپریٹر کا کام کردار اسی طرح ہوتا ہے:

  • اگر آپریشن ایک آپرکٹ ہے تو false برتا جاتا ہے
  • اگر آپریشن عدد 0 ہے تو true برتا جاتا ہے
  • اگر آپریشن 0 کے علاوہ کسی بھی عدد ہے تو false برتا جاتا ہے
  • اگر آپریشن null ہے تو true برتا جاتا ہے
  • اگر آپریشن NaN ہے تو true برتا جاتا ہے
  • اگر آپریشن undefined ہے تو خطا رختی ہے

عام طور پر، یہ آپریٹر لوپ کا کنٹرول کرنے کے لئے استعمال کیا جاتا ہے:

var bFound = false;
var i = 0;
while (!bFound) {
  اگر aValue[i] == vSearchValues تو {
    bFound = true;
  }
    i++;
  }
}

اس مثال میں، Boolean متغیر (bFound) استعمال کیا جاتا ہے تاکہ معلومات کو تلاش کیا جانا کی کامیابی کو ریکارڈ کیا جائے۔ اگر معلومات میں کسی بیت کا تلاش کیا جاتا ہے تو bFound کو true مقرر کیا جائے گا، !bFound کو false بن جائے گا، جس کا مطلب یہ ہوگا کہ پروگرام while لوپ سے نکل جائے گا。

جب ECMAScript متغیر کی Boolean کی ارزش کو جانچ رہا ہو، تو logic NOT آپریٹر بھی استعمال کیا جاسکتا ہے۔ اس کے لئے ایک سطر میں دو NOT آپریٹروں کا استعمال کیا جاسکتا ہے۔ کسی بھی قسم کا آپریشن کیا جائے، پہلا NOT آپریٹر Boolean کی ارزش کو درآمد کرتا ہے۔ دوسرا NOT آپریٹر اس Boolean کی ارزش کو منفی بنادیتا ہے، جس سے متغیر کی حقیقی Boolean کی ارزش ملتی ہے。

var bFalse = false;
var sRed = "red";
var iZero = 0;
var iThreeFourFive = 345;
var oObject = new Object;
document.write("واقعی ارزش bFalse ہے " + (!!bFalse));
document.write("واقعی ارزش sRed ہے " + (!!sRed));
document.write("واقعی ارزش iZero ہے " + (!!iZero));
document.write("واقعی ارزش iThreeFourFive ہے " + (!!iThreeFourFive));
document.write("واقعی ارزش oObject ہے " + (!!oObject));

结果:

bFalse 的逻辑值是 false
sRed 的逻辑值是 true
iZero 的逻辑值是 false
iThreeFourFive 的逻辑值是 true
oObject 的逻辑值是 true 

逻辑 AND 运算符

在 ECMAScript 中,逻辑 AND 运算符用双和号(&&)表示:

مثال:

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

下面的真值表描述了逻辑 AND 运算符的行为:

عملگر 1 عملگر 2 نتیجه
true true true
true false false
false true false
false false false

逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。

如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:

  • 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
  • 如果两个运算数都是对象,返回第二个对象。
  • 如果某个运算数是 null,返回 null。
  • 如果某个运算数是 NaN,返回 NaN。
  • اگر یکی از عملگرها undefined باشد، خطا رخ خواهد داد.

与 Java 中的逻辑 AND 运算相似,ECMAScript 中的逻辑 AND 运算也是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数。对于逻辑 AND 运算来说,如果第一个运算数是 false,那么无论第二个运算数的值是什么,结果都不可能等于 true。

یہ مثال درست کریئے:

var bTrue = true;
var bResult = (bTrue && bUnknown);	//غلطی آئیگی
alert(bResult);			//یہ سطر نہیں چلائی جائیگی

یہ کد بندلی اور بندلی کو ختم کرتے وقت غلطی کا اظہار کرنا دسگا، کیونکہ بندلی باینکنز کا رجحان undefined ہے، بندلی بٹرائو کا رجحان true ہے، کیونکہ بندلی اور بندلی کو ختم کرنا بندلی باینکنز کا حساب کریگا، ایسا کرنا غلطی کا اظہار کرنا دسگا، کیونکہ بندلی باینکنز کا رجحان undefined ہے اور اس کو بندلی اور بندلی کو ختم کرنے کے لئے استعمال نہیں کیا جاسکتا。

اگر اس مثال کو بدل دیئے اور پہلے بندلی کو false بنادیئے تو کوئی غلطی آئیگی نہیں:

var bFalse = false;
var bResult = (bFalse && bUnknown);
alert(bResult);			//بندلی "false" کا اظہار کرنا

یہ کد میں اسکریپٹ کسی بھی بندلی اور بندلی کو ختم کرنا دسگا، جو بندلی "false" نا کہتا ہے، اگر بندلی باینکنز کا رجحان undefined ہو تو اس کا حساب نہیں کیا جائے گا، کیونکہ پہلے آپریئنٹ کا رجحان false ہے。

توضیح:}در هنگام استفاده از عملگر منطقی AND، باید به این ویژگی ساده‌سازی محاسبه آن توجه کنید.

عملگر منطقی OR

عملگر منطقی OR در ECMAScript مانند Java با دو خط تیر (||) نشان داده می‌شود:

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

جدول ارزش‌های زیر رفتار عملگر منطقی OR را توضیح می‌دهد:

عملگر 1 عملگر 2 نتیجه
true true true
true false true
false true true
false false false

مانند عملگر منطقی AND، اگر یکی از عملگرها Boolean نباشد، منطقی OR ممکن است مقدار Boolean بازگرداند:

  • اگر یکی از عملگرها اشیا باشد و عملگرهای چپین همه false باشند، آن اشیا برمی‌گرداند.
  • اگر دو عملگر هر دو اشیاء باشند، اولین اشیا برمی‌گرداند.
  • اگر آخرین عملگر null باشد و دیگر عملگرها false باشند، null برمی‌گرداند.
  • اگر آخرین عملگر NaN باشد و دیگر عملگرها false باشند، NaN برمی‌گرداند.
  • اگر یکی از عملگرها undefined باشد، خطا رخ خواهد داد.

مانند عملگر منطقی AND، عملگر منطقی OR نیز یک عملگر ساده است. برای عملگر منطقی OR، اگر مقدار اولین عمل عددی true باشد، دیگر مقدار دومین عمل محاسبه نمی‌شود.

مثال:

var bTrue = true;
var bResult = (bTrue || bUnknown);
alert(bResult);			//خروجی "true"

مانند مثال‌های قبلی، متغیر bUnknown تعریف نشده است. اما، به دلیل اینکه مقدار متغیر bTrue true است، bUnknown محاسبه نمی‌شود، بنابراین خروجی "true" است.

اگر bTrue را به false تغییر دهید، خطا رخ خواهد داد:

var bFalse = false;
var bResult = (bFalse || bUnknown);	//خطا رخ خواهد داد
alert(bResult);			//این خط اجرا نخواهد شد