سلام دوستان جاوااسکریپتی! توی این قسمت می‌خوایم عملگرهای منطقی که از اون فراوان توی برنامه‌ها استفاده می‌کنیم آشنا بشیم.

توی این قسمت موارد زیر رو یاد می‌گیریم:

 

ما از این عملگرها بیشتر توی شرط‌ها و حلقه‌ها مثل if و while که توی قسمت‌های بعدی مفصل با اونها آشنا می‌شیم استفاده می‌کنیم 😉

قبل از شروع بهتره که با مقدارهای falsy و truthy آشنایی داشته باشیم:

 

عملگر Logical AND یا &&

این عملگر که به صورت && هست اگه بین دو مقدار قرار بگیره، خروجی برابر با اولین مقدار falsy هست. اگه هیچ کدوم از مقدارها falsy نباشن، آخرین مقدار به عنوان خروجی در نظر گرفته میشه. به مثال زیر دقت کنین:

0 && "Hello";

توی این مثال، اولین مقدار یعنی 0 یک مقدار falsy هست. پس خروجی کل این عبارت برابر با 0 هست. حتی اگه مقدارها رو جابجا کنیم خروجی باز هم 0 خواهد بود:

"Hello" && 0;

حالا مثال زیر رو در نظر بگیرین:

true && "Hello";

اینجا ما هیچ مقدار falsy نداریم. پس خروجی برابر با آخرین مقدار یعنی رشته Hello هست. از کد زیر دکمه ► رو بزنین تا خروجی‌ها رو ببینین:

const expr1 = 0 && "Hello";
const expr2 = "Hello" && 0;
const expr3 = true && "Hello";

alert(expr1);
alert(expr2);
alert(expr3);

توی کدهای بالا ما دو عبارت داشتیم. می‌تونیم بیشتر از دو عبارت هم داشته باشیم که به‌وسیله && به هم متصل شدن:

12 && "hello" && null && undefined;

توی این کد اولین عبارت falsy برابر با null هست. پس خروجی این کد null در نظر گرفته میشه. اما توی کد زیر که هیچ کدوم از عبارت‌ها falsy نیستن:

const x = 12 && true && "hello";

alert(x);

مقدار متغیر x برابر با آخرین عبارت یعنی رشته Hello در نظر گرفته میشه.

نکته‌ای که باید در نظر داشته باشیم اینه که وقتی اولین عبارت falsy پیدا شد، بقیه عبارت‌ها محاسبه و پردازش نمیشن. بنابراین توی کد زیر، قسمت alert('Hello') اجرا نمیشه:

var x = 12 && null && alert('Hello');
	 
alert(x); // null

 

عملگر Logical OR یا ||

این عملگر، اگه بین دو یا چند عبارت قرار بگیره، دنبال اولین عبارتی می‌گرده که truthy هست. برای مثال کد زیر رو در نظر بگیرید:

12 || "hello" || null || undefined;

اولین عبارت truthy توی این کد 12 هست. بنابراین خروجی کل این عبارت برابر با 12 هست.

نکته‌ای که باید در نظر داشته باشیم اینه که با پیدا شدن اولین عبارت truthy، بقیه عبارت‌ها محاسبه و پردازش نمیشن. پس اگه چنین کدی داشته باشیم:

var x = 12 || "hello" || alert() || undefinedFunction();

alert(x);

اولین عبارت 12 هست. پس بقیه عبارت‌ها نادیده گرفته میشن و اجرا نخواهند شد.

 

عملگر Logical NOT یا !

این عملگر که با یک علامت تعجب ! هست فقط یک عملوند (مقدار) داره و خروجی اون یک Boolean هست:

result = !value;

این عملگر ابتدا مقدارش رو به حالت بولین تبدیل می‌کنه. اگه حالت بولینِ مقدار true بشه، خروجی عملگر false هست. اما اگه حالت بولینِ مقدار false بشه، خروجی این عملگر true هست. یعنی معکوسِ حالتِ بولینِ مقدار. برای مثال کد زیر رو در نظر بگیرین:

!"Hello";

اینجا ابتدا رشته Hello به حالت بولین خودش که true هست تبدیل میشه و بعد حالتِ معکوسِ بولین یعنی false به عنوان خروجی این عملگر در نظر گرفته میشه.

مثال‌های زیر رو در نظر بگیرین:

!true    // false
!false   // true
!0       // true
!5       // false
!"Hello" // false
!""      // true

این عملگر مثل عملگرهای قبلی کاربرد زیادی توی شرط‌ها (که توی قسمت‌های بعدی با اونها آشنا می‌شیم) داره.

 

عملگرهای منطقی و کدنویسی تمیز 🧹

نکته‌ای که برای کدنویسی تمیز هنگام استفاده از عملگرهای منطقی باید درنظر داشته باشیم، فاصله‌ها هست. ما باید قبل و بعد از عملگرهای && و || یک فاصله بذاریم:

a<<>>&&<<>>b;
a<<>>||<<>>b;

<<<a&&b;>>>
<<<a||b;>>>

برای عملگر ! که یک عملگر Unary به حساب میاد، لازم به گذاشتن فاصله نیست:

!true;
!message;

<<<! true>>>
<<<! message>>>

 

امیدوارم از این قسمت هم استفاده کرده باشین. توی آخرین قسمت از موضوع عملگرهای جاوااسکریپت، موضوع تقدم عملگرها رو بررسی خواهیم کرد. روزتون خوش 😉🌹

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#logical_operators

https://javascript.info/logical-operators#not