اپراتورهای منطقی

در جاوااسکریپت سه اپراتور منطقی وجود دارند: || (OR), && (AND), ! (NOT).

ابن عمگر ها رو منطقی مینامیم میتونن روی هر نوع از داده اعمال شوند نه عملا فقط برای boolean ها و نتیجه شون هم میتونه هز نوعی باشه.

بذارید با جزئیات بیشتر ببینیم.

|| OR

با دو علامت خط عمودی || ارائه شده است:

در برنامه نویسی کلاسیک فقط به معنای کار با مقادیر boolean هست.

در صورتی که هر یک از آنها true باشد نتیجه true هست در غیر اینصورت false .

در جاوااسکریپت کمی سختر و قدرتمندتر است .

اما ابتدا ببینیم برای مقادیر boolean چه اتفاقی میافتد.

در زیر چهار ترکیب منطقی وجود دارد :

ما دیدم که همه نتیجه ها به جز موردی که هر دو false بودند true بود.

درصورتی که عملوند boolean نباشد برای محاسبه به boolean تبدیل میشود.

برای نمونه عدد یک میشود true  و صفر نیز میشه false :

اغلب OR || برای شرط های if استفاده میشه .

برای زمانی که بررسی کنیم که یکی از مقادیر true هستند.

مثال :

ما میتونیم شرط های بیشتری رو استفاده کنیم:

OR || پیدا کردن اولین مقدار true

منطق توضیح داده شده تا حدی کلاسیک هست.

بیایید ویژگی های اضافی جاوااسکریپت رو اعمال کنیم.

الگوریتم توسعه داده شده به شزح زیر کار میکند.

با توجه به مقادیر چندگانه OR :

عملگر OR || موارد زیر رو انجام میده :

  • عملوند ها رو از چپ به راست محاسبه میکند.
  • برای هر یک از عموند ها ، اونو به boolean تبدیل میکنه اگر نتیجه true باشد. متوقف میشه و مقدار اصلی رو برمیگردونه.
  • اگر همه عملوند ها محاسبه شوند و همگی false باشند آخرین عملوند را برمیگرداند.

مقدار اصلی بازگردانده میشود.

به عبارتی دیگر زنجیره ای از OR || ها اولین مقدار true و یا آخرین مقدار درصورتی که همه مقادیر false باشند رو برمیگردونه.

مثال :

این منجر به استفاده جذاب در مقایسه با pure ، کلاسیک یه فقط OR میشود.

۱. دریافت اولین مقدار موجود از یک آرایه یا عبارات

تصور کنید که ما یک لیستی از متغیر ها رو داریم که در آنها یا اطلاعات  یا null/undefined  هست.

چگونه میتونیم اولین مورد که شامل اطلاعات هست رو پیدا کنیم؟

ما میتونیم از OR || استفاده کنیم :

در صورتی که defaultUser هم null/undefined بود مقدار unnamed در متغیر name ریخته میشد.

۲. سنجش میانبری

عملوند ها میتوانند به غیر از مقادیر عبارات دلخواه هم باشند.

از چپ به راست محاسبه و آزمایش میشن زمانی که true باشد محاسبه متوقف شده و مقدار اصلی آن را برمیگرداند.

این فرآیند را سنجش میانبری مینامیم.

واضح است که عبارات قبلی بر argument های بعدی تاثیر دارند.

در مثال زیر میبینیم که x مقداری نمیگیرد:

اگر به جای اولین argument مقدار false باشد انتساب انجام میشود:

انتساب یک مورد ساده است.

ممکن هست تاثیرات زیادی داشته باشد اگر محاسبه بهش نرسد نشان داده نمیشود.

همونطور که میتونیم ببینیم این راه حلی کوتاهتر از استفاده از  if هست.

اولین عملوند به boolean تبدیل میشود.اگر false باشد دومین مورد محاسبه میشود.

بیشتر اوقات برای فهم ساده کد بهتر است از if معمولی استفاده کنیم. اما بعضی مواقع نیسز میتونیم از این روش استفاده کنیم.

 

AND &&

عملگر  and  با دو آمئرسند نمایش داده میشود.

در برنامه نویسی کلاسیک عملگر AND در صورتی که همه عملوند ها true باشند مقدار true را برمیگرداند در غیر اینصورت مقدار false رو برمیگرداند:

یک مثال با if :

همانند عملگر OR مجاز به استفاده هر چند تعدادی از عملوند ها هستیم:

 

AND && یافتن اولین مقدار false

AND چندگانه:

عمگر AND کارهای زیر را انجام میدهد:

  • عملوند ها را از چپ به راست ارزیابی میکند.
  • هر یک از عملوند ها را به boolean تبدیل کرده و اگر مقدار آن false باشد. متوقف شده و مقدار اصلی اون رو برمیگردونه .
  • اگر همه عملگرها true باشند value آخرین عملوند برگردانده میشود.

به عبارت دیگر AND اولین value که false باشد یا آخرین value را بر میگرداند.

قوانین بالا شبیه به عملگر OR هست با این تفاوت که OR مقدار اولین true رو برمیگرداند اما AND مقدار اولین false را.

مثال :

ما همچنین میتونیم چندین value را در یک سطر قرار بدیم .

در زیر میبینیم که چگونه اولین مقدار false رو برمیگردونه:

وقتی که همه مقادیر true هستند:

دیدیم که آخرین مقدار رو برگردوند.

 


تقدم AND از OR بالاتر است 

پس کد a && b || c && d اساسا مانند این است که عبارت && داخل پرانتز است: (a && b) || (c && d).


همچنین مثل OR میتونیم AND رو با عملگر if جایگزین کنیم.

مثال:

عمل در قسمت راست AND فقط در صورتی که محاسبات به ان برسد اجرا میشه.

به این معنا ، فقط اگر (x > 0) نتیجه true باشد.

پس اساسا اگر بخواهمی اون رو با if بنوسیم به صورت زیر است.:

با این تفاوت که && کوتاهتر است.

اما if واضحتر است و کمی بیشتر خواناتر.

بنابراین توصیه میکنیم از ساختاری باتوجه به اهداف خود استفاده کنید.

 

!(NOT)

عملگر boolean NOT  با علامت تعجب ارائه شده است.

syntax:

این عملگر یک argument دارد و مانند زیر عمل میکند:

  • عملوند را به boolean تبدیل کرده: true/false.
  • مقدار معکوس را برمیگرداند.

مثال :

NOT دوتایی نیست بعضی مواقع برای تبدیل value به boolean استفاده میکنند:

اولین ! مقدار رو به معکوس boolean تبدیل میکنه و دومی معکوس boolean رو معکوس میکنه که نتیجه ش میشه تبدیل شده مقدار اولیه به یک نوع boolean.

برای اینکار راه های دیگری هم برای اینکار وجود دارد.

مثلا میشه از تابع Boolean استفاده کرد :

تقدم NOT از مابقی عملگر های منطقی بالاتر هست و بنابر این قبل از دیگر عملگر ها اجرا میشود.

 

منبع :javascript.info

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *