عملگرهای منطقی معمولاً با مقادیر بولین (منطقی) استفاده میشوند؛ وقتی با این مقادیر به کار میروند، یک مقدار بولین برمیگردانند. با این حال، عملگرهای && ،|| و ?? در واقع مقدار یکی از عملوندهای مشخصشده را برمیگردانند؛ بنابراین اگر این عملگرها با مقادیر غیربولین استفاده شوند، ممکن است یک مقدار غیربولین خروجی دهند. به همین دلیل، نام مناسبتر برای آنها «عملگرهای انتخاب مقدار» است.
این عملگرها در جدول زیر توضیح داده شدهاند:
| عملگر | نحوه استفاده | توصیف کارکرد |
AND منطقی (&&) | expr1 && expr2 | اگر expr1 قابل تبدیل به false باشد، همان expr1 را برمیگرداند؛ در غیر این صورت، expr2 را برمیگرداند. بنابراین، وقتی با مقادیر بولین استفاده شود، در صورتی که هر دو عملوند true باشند، true برمیگرداند و در غیر این صورت false میدهد. |
| OR منطقی (` | `) | |
نفیدوگانه یا نالیش (??) | expr1 ?? expr2 | اگر expr1 نه null باشد و نه undefined، همان expr1 را برمیگرداند؛ در غیر این صورت expr2 را خروجی میدهد. |
NOT منطقی (!) | !expr | اگر تنها عملوندش قابل تبدیل به true باشد، مقدار false برمیگرداند؛ در غیر این صورت true میدهد. |
نکته: نمونههایی از عبارات که میتوانند به
falseتبدیل شوند (مقادیر Falsy) عبارتند از:null،0،0n،NaN، رشتهی خالی ("") یاundefined.
&& (AND منطقی)const a1 = true && true; // true && true مقدار true برمیگرداند
const a2 = true && false; // true && false مقدار false برمیگرداند
const a3 = false && true; // false && true مقدار false برمیگرداند
const a4 = false && 3 === 4; // false && false مقدار false برمیگرداند
const a5 = "Cat" && "Dog"; // true && true مقدار "Dog" برمیگرداند
const a6 = false && "Cat"; // false && true مقدار false برمیگرداند
const a7 = "Cat" && false; // true && false مقدار false برمیگرداند
|| (OR منطقی)const o1 = true || true; // true || true مقدار true برمیگرداند
const o2 = false || true; // false || true مقدار true برمیگرداند
const o3 = true || false; // true || false مقدار true برمیگرداند
const o4 = false || 3 === 4; // false || false مقدار false برمیگرداند
const o5 = "Cat" || "Dog"; // true || true مقدار "Cat" برمیگرداند
const o6 = false || "Cat"; // false || true مقدار "Cat" برمیگرداند
const o7 = "Cat" || false; // true || false مقدار "Cat" برمیگرداند
?? (Nullish coalescing)const n1 = null ?? 1; // مقدار 1
const n2 = undefined ?? 2; // مقدار 2
const n3 = false ?? 3; // مقدار false
const n4 = 0 ?? 4; // مقدار 0
دقت کنید که عملگر ?? شبیه به || عمل میکند، اما فقط زمانی عبارت دوم را برمیگرداند که عبارت اول "nullish" (یعنی فقط null یا undefined) باشد. به همین دلیل، عملگر ?? جایگزین بهتری نسبت به || برای تعیین مقادیر پیشفرض است؛ به خصوص در زمانهایی که مقادیری مثل رشتهی خالی '' یا عدد 0 به عنوان مقادیر معتبر در برنامه شناخته میشوند و نباید مقدار پیشفرض روی آنها اعمال شود.
! (NOT منطقی)const n1 = !true; // !true مقدار false برمیگرداند
const n2 = !false; // !false مقدار true برمیگرداند
const n3 = !"Cat"; // !"Cat" (نقیض مقدار true) مقدار false برمیگرداند
از آنجا که عبارتهای منطقی از چپ به راست ارزیابی میشوند، بر اساس قوانین زیر برای «اتصال کوتاه» احتمالی مورد آزمایش قرار میگیرند:
عبارت anything && falsy به سرعت اتصال کوتاه شده و به همان مقدار falsy ارزیابی میشود.
عبارت anything || truthy به سرعت اتصال کوتاه شده و به همان مقدار truthy ارزیابی میشود.
عبارت anything ?? nonNullish به سرعت اتصال کوتاه شده و به همان مقدار non-nullish (غیرهیچ) ارزیابی میشود.
قوانین منطق تضمین میکنند که این ارزیابیها همیشه درست هستند. توجه داشته باشید که بخشِ anything (بخش دوم عبارت) در ساختارهای بالا اصلاً ارزیابی و اجرا نمیشود؛ بنابراین هرگونه اثر جانبی (Side effect) که ممکن بود اجرای آن بخش داشته باشد، اتفاق نخواهد افتاد.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://developer.mozilla.org/en-US/docs/Web/JavaScript