درک و یادگیری عملگرهای منطقی در جاوا اسکریپت از مفاهیم بنیادی این زبان بهحساب میآید. این «عملگرها» (اپراتور | Operator) عملیات منطقی روی مقادیر بولی (دودویی) را تسهیل میکنند و به کاربران امکان میدهند مقادیر بولی را بهدلخواه دستکاری کرده و تصمیمات هوشمندانهتری در امور کدنویسی خود بگیرند. یادگیری عملگرهای منطقی در زبان برنامه نویسی جاوا اسکریپت، به کاربران این امکان را میدهند که برنامههای سازماندهی شده خوبی ایجاد کنند.
این آموزش از «مجله فرادرس» به عملگرهای منطقی جاوا اسکریپت میپردازد که شامل عملگر منطقی « NOT (!)
»، عملگر منطقی « AND (&&)
» و عملگر منطقی « OR (||)
» میشود. همچنین در این مطلب انواع عملگر بیتی و تفاوت آنها با عملگرهای منطقی نیز بحث خواهد شد. کاربران با استفاده از این آموزش، نحوه استفاده مؤثر از این عملگرها را یاد خواهند گرفت.
عملگر جاوا اسکریپت چیست؟
عملگرها اجزای اساسی در اکثر زبانهای برنامه نویسی هستند. آنها نمادهایی محسوب میشوند که به مفسر یا کامپایلر دستور میدهند تا اقدامات خاص ریاضی، رابطهای یا منطقی را انجام دهد. جاوا اسکریپت، مانند بسیاری از زبانهای دیگر، انواع مختلفی از عملگرها را در برمیگیرد. عملگرهای جاوا اسکریپت شامل عملگرهای ساده ریاضی مانند «+»، عملگرهایی برای مقایسه مقادیر، عملگرهای منطقی، عملگرهای بیتی و غیره میشوند.
هرکدام از عملگرهای جاوا اسکریپت کاربردهای خاص خودشان را دارند و در سناریوهای مختلفی مورد استفاده قرار میگیرند. در ادامه این بحث انواع عملگرهای بیتی و عملگرهای منطقی در جاوا اسکریپت مورد بررسی واقع خواهند شد.
عملگرهای منطقی در جاوا اسکریپت
عملگرهای منطقی نقش محوری را در جاوا اسکریپت ایفا میکنند و کاربر را قادر میسازند تا متغیرها را مقایسه کرده و بر اساس نتیجه مقایسه اقداماتی را انجام دهد. به عنوان مثال، اگر نتیجه مقایسه TRUE
باشد به دنبال آن عمل خاصی انجام بگیرد و برعکس اگر نتیجه مقایسه false
بود، عملی دیگر انجام شود. عملگرهای منطقی کدنویسی جاوا اسکریپت را بسیار تسهیل کردهاند. در کل عملگرهای جاوا اسکریپت از نوع منطقی به صورت موارد زیر هستند:
- عملگر منطقی «NOT (!)»
- عملگر منطقی AND (&&)»»
- عملگر منطقی «OR (||)»
در ادامه هرکدام یک از ٣ عملگر منطقی بالا به همراه مثالهایی ساده تشریح خواهند شد.
نکته: در این مطلب هر جا واژه «نادرست» استفاده شد به معنای False
و 0
است و هر جا که واژه «درست» به کار رفت به معنی true
و 1
خواهد بود.
عملگر منطقی NOT در جاوا اسکریپت
در جاوا اسکریپت، عملگر منطقی NOT با علامت تعجب ( !
) نشان داده میشود. برخلاف محدود بودن به مقادیر بولی، این عملگر منطقی را میتوان برای مقداری واحد از هر نوع اعمال کرد. این عملگر منطقی هنگامی که با مقدار بولی استفاده شود، اگر مقدار False
باشد، عملگر true
را بازمیگرداند و بالعکس. مثال زیر برای نشان دادن این مفهوم است:
let eligible = false,
required = true;
console.log(!eligible);
console.log(!required);
خروجی مثال بالا به صورت زیر است:
true false
در مثال بالا، از آنجا که eligible
درست است، !eligible
به False
ارزیابی خواهد شد. به طور مشابه، !required
نادرست است در نتیجه required
به true
ارزیابی میشود.
عملگر منطقی NOT برای مقادیر غیر بولی
اعمال عملگر NOT به مقدار غیر بولی شامل دو مرحله است: ابتدا مقدار به نوع بولی تبدیل میشود و سپس نفی آن انجام خواهد شد که مثال زیر برای نشان دادن این مفهوم در جاوا اسکریپت ذکر شده است:
!a
عملگر منطقی NOT به عنوان یکی از عملگرهای منطقی در جاوا اسکریپت در این شرایط بر اساس اصول زیر عمل میکند:
- اگر a
تعریف نشده باشد، نتیجه درست است.
- اگر a
صفر باشد، نتیجه درست است.
- اگر a
عددی غیر صفر باشد، نتیجه نادرست است.
- اگر a
برابر NaN
باشد، نتیجه درست است.
- اگر a
شی باشد، نتیجه نادرست است.
- اگر a
رشته خالی باشد، نتیجه درست است.
- اگر a
رشته غیر خالی باشد، نتیجه نادرست است.
مثال زیر تمام سناریوهایی را نشان میدهد که عملگر منطقی NOT به مقادیر غیر بولی اعمال شده است:
console.log(!undefined); // true
console.log(!null); // true
console.log(!20); // false
console.log(!0); // true
console.log(!NaN); // true
console.log(!{}); // false
console.log(!''); // true
console.log(!'OK'); // false
console.log(!false); // true
console.log(!true); // false
با استفاده از مثال بالا و توجه به جزئیات آن، درک جامعی از عملگر منطقی NOT و رفتار آن در سناریوهای مختلف به دست خواهیم آورد.
عملگر منطقی مضاعف NOT
گاهی ممکن است کاربر با عملگر منطقی مضاعف NOT یا نفی مضاعف ( !!
) مواجه شود. این ساختار از عملگر منطقی NOT دو بار استفاده میکند تا مقدار بولی واقعی متغیری مشخص را آشکار کند. به طور مؤثر، این تکنیک به همان نتیجهای میرسد که با استفاده از تابع Boolean()
میتوان به آن نتیجه دست یافت. مثال زیر نحوه استفاده از این عملگر منطقی را نشان میدهد:
let counter = 10;
console.log(!!counter); // true
در مثال فوق، اولین عملگر NOT، مقدار بولی متغیر counter
را نفی میکند. اگر counter
در ابتدا true
باشد، پس اولین عملگر NOT آن را به false
تبدیل میکند و بالعکس. از طرفی دیگر عملگر بعدیNOT نتیجه نفی اولیه را نفی کرده و در نهایت مقدار بولی معتبر متغیر counter
را تولید میکند. با استفاده از این رویکرد، ماهیت بولی واقعی متغیر قابل تشخیص خواهد بود. این مفهوم در استفاده از عملگرهای منطقی در جاوا اسکریپت به کاربر این امکان را میدهد که به طور مؤثر مقدار بولی پشت متغیر یا مقادیر را مشخص کرده و درک خود را از رفتار عملگر منطقی NOT تقویت کند.
عملگر بیتی NOT در جاوا اسکریپت
عملگر بیتی جاوا اسکریپت «NOT (~)» عملگری واحد است که بر روی عدد صحیح منفردی عمل میکند و باعث وارونگی تمام بیتهای مجزای آن میشود. در اصل این عملگر بیتی، هر بیت 0
را به 1
و هر بیت 1
را به 0
تبدیل میکند. «سینتکس» (Syntax) عملگر NOT بیتی به صورت زیر است:
~c
در سینتکس بالا، c
عملوند موجود در عملیات است. کار عملگر بیتی NOT معکوس کردن تمام بیتهای موجود در عملوند، از جمله بیتهای علامت است. مثال زیر نحوه استفاده از این نوع عملگر بیتی را نشان میدهد:
let c = 10; // 00001010
let d = -10; // 11110110
console.log(~c); // 11110101
console.log(~d); // 00001001
در مثال ارائه شده، عملگر NOT نوعی وارونگی بیت را در تمام بیتها اعمال میکند (به عنوان مثال، 0 → 1
، 1 → 0
، و غیره) که این کار برای بیتهای علامت نیز اعمال میشود. با درک نقش عملگر NOT بیتی، کاربر توانایی دستکاری دادههای باینری را با معکوس کردن تکتک بیتها به دست میآورد.
عملگر منطقی AND در جاوا اسکریپت
یکی دیگر از عملگرهای منطقی در جاوا اسکریپت، عملگر منطقی AND است. عملگر منطقی AND با دو علامت &&
نشان داده میشود. میتوان عملگر &&
را همانطور که در عبارت زیر نشان داده شده است به صورت زیر به کار برد:
let result = a && b;
وقتی a
بتواند به true
تبدیل شود، عملگر &&
مقدار b
را به دست میدهد. در غیر این صورت، مقدار a
را بازمیگرداند. این اصل به طور مداوم برای تمام مقادیر بولی اعمال میشود. جدول زیر نتایج عملگر &&
را هنگامی که به دو مقدار بولی اعمال میشود نشان میدهد:
a | b | a && b |
درست | درست | درست |
درست | نادرست | نادرست |
نادرست | درست | نادرست |
نادرست | نادرست | نادرست |
نتیجه عملگر &&
زمانی درست است اگر هر دو مقدار درست باشند. در غیر این صورت، به نادرست ارزیابی میشود. مثال زیر برای نشان داده این مفهوم آورده شده است:
let eligible = false,
required = true;
console.log(eligible && required); // false
در مثال بالا، از آنجا که عبارت eligible
نادرست است، عبارت eligible && required
به نادرست منجر میشود. مثال زیر هم در رابطه با استفاده از این عملگر مهم است:
let eligible = true,
required = true;
console.log(eligible && required); // true
در مثال بالا، هر دو eligible
و e required
درست هستند، در نتیجه عبارت eligible && required
به درست ارزیابی میشود. توضیحات بالا درک جامعی از عملگر AND منطقی و رفتار آن هنگام ترکیب مقادیر بولی ارائه میدهد.
ارزیابی اتصال کوتاه با اپراتور منطقی (&&)
اپراتور &&
در جاوا اسکریپت به اصل «ارزیابی اتصال کوتاه» (Short-Circuit Evaluation) پایبند است. این بدان معناست که عملگر &&
مقدار عملوند دوم را تنها در صورتی ارزیابی میکند که مقدار عملوند اول برای اطمینان از نتیجه نهایی عبارت کافی نباشد. توجه به مثال زیر در این رابطه بسیار مهم است:
let b = true;
let result = b && (1 / 0);
console.log(result);
خروجی مثال بالا به صورت زیر است:
Infinity
در مثال بالا، b
درست است و باعث میشود که عملگر &&
برای استنباط نتیجه، ارزیابی (1/0)
را نیز انجام بدهد. همانطور که نشان داده شد، خروجی به Infinity
تبدیل میشود. حال به مثال زیر توجه کنید که قطعه کد آن به صورت زیر است:
let b = false;
let result = b && (1 / 0);
console.log(result);
خروجی کد بالا به صورت زیر است:
false
این بار در مثال بالا با نادرست بودن b
، عملگر &&
از ارزیابی عبارت دوم پرهیز میکند، زیرا میتواند به طور قطع نتیجه بگیرد که بر اساس مقدار عملوند اولیه. نتیجه نهایی نادرست است. کاربر با درک مفهوم ارزیابی اتصال کوتاه در استفاده از عملگرهای منطقی در جاوا اسکریپت، بینشی در مورد نحوه عملکرد کارآمد اپراتور AND منطقی به دست میآورد، به سرعت نتایج را در صورت امکان تعیین کرده و از ارزیابیهای غیرضروری در صورت نیاز اجتناب میکند.
زنجیره سازی عملگر منطقی AND در جاوا اسکریپت
زنجیرهسازی عملگر به این معنی است که دنبالهای از چند عملگر &&
را میتوان در عبارتی واحد استفاده کرد. مثال زیر این مفهوم را بیان میکند:
let result = value1 && value2 && value3;
عملگر منطقی &&
در سناریوی فوق بر اساس اصول زیر عمل میکند:
- مقادیر را در عبارت از چپ به راست ارزیابی میکند.
- به ازای هر مقداری که با آن مواجه میشود آن را به مقداری بولی تبدیل میکند. اگر نتیجه نادرست باشد، ارزیابی متوقف میشود و مقدار اصلی بازگردانده خواهد شد.
- اگر همه مقادیر درست باشند، عملگر مقدار نهایی را بازیابی میکند.
در اصل، عملگر &&
اولین مقدار نادرستی را که با آن مواجه میشود یا آخرین مقدار را در صورتی که همه مقادیر درست باشند، بازمیگرداند.
عملگر بیتی AND در جاوا اسکریپت
عملگر بیتی «AND (&)» در جاوا اسکریپت برای مقایسه بیتهای متناظر دو عملوند باینری ( اعدادی که صرفاً از 0
و 1
تشکیل شدهاند) استفاده میشود. برای هر مجموعه از بیتهای ورودی، بیت حاصل تنها زمانی روی 1
تنظیم میشود که هر دو بیت ورودی 1
باشند. در غیر این صورت، روی 0
تنظیم میشود. دستور عملگر بیتی AND به صورت زیر است:
a & b
در مثال بالا، a
و b
عملوندهایی را نشان میدهند که تحت عملیات بیتی قرار میگیرند. در ادامه نحوه عملکرد عملگر بیتی AND آمده است:
- عملیات AND برای هر جفت بیت متناظر در a
و b
از راست به چپ اعمال میشود.
- اگر هر دو بیت 1
باشند، نتیجه 1
است. اگر هر یک از بیتها 0
باشند، نتیجه 0
است.
- نتیجه یک مقدار عددی جدید است که در آن هر بیت نتیجه عملیات AND را روی بیتهای مربوطه a
و b
منعکس میکند.
مثال زیر در رابطه با این عملگر بیتی بسیار مهم است:
let a = 50; // 00110010
let b = 100; // 01100100
let result = a & b; // 00100000
console.log(result); // 32
در مثال ارائه شده، a
برابر با مقدار 50
در فرمت اعشاری است که معادل باینری آن میشود 00110010
. همچنین b
برابر با 100
و معادل باینری آن 01100100
است. عملگر AND بیتی هر جفت بیت مربوطه را از راست به چپ ارزیابی و تولید میکند. در نهایت در اعمال این عملگر برای دو عملوند نام برد مقدار 00100000
باینری حاصل میشود که در فرمت اعشار برابر با ٣٢ است. با درک عملکرد عملگر بیتی AND، کاربر بینش ارزشمندی در مورد نحوه پردازش مقادیر باینری به دست میآورد و میتواند دادهها را در سطح بیت دستکاری و تجزیهوتحلیل کند.
عملگر منطقی OR در Javascript
یکی دیگر از عملگرهای منطقی در جاوا اسکریپت، عملگر منطقی OR است که با نماد ||
نشان داده میشود. میتوان از عملگر ||
برای مقایسه دو مقدار از هر نوع استفاده کرد. مثال زیر نحوه استفاده از این عملگر منطقی را نشان میدهد:
let result = a || b;
عملکرد عملگر ||
از اصل زیر پیروی میکند:
- اگر a
را بتوان به true
تبدیل کرد، عملگر a
را بازمیگرداند. در غیر این صورت، b
را بازخواهد گرداند. این اصل حتی برای مقادیر بولی نیز صدق میکند. جدول زیر نتایج عملگر ||
را بر اساس مقادیر عملوندها نشان میدهد:
a | b | a || b |
درست | درست | درست |
درست | نادرست | درست |
نادرست | درست | درست |
نادرست | نادرست | نادرست |
عملگر ||
تنها زمانی که هر دو مقدار نادرست باشند، false
را بازمیگرداند. اگر هر یک از مقادیر درست باشند، عملگر ||
مقدار true
را به عنوان خروجی به کاربر میدهد. مثال زیر در این رابطه بسیار مهم است:
let eligible = true,
required = false;
console.log(eligible || required); // true
همچنین توجه به مثال زیر هم خالی از لطف نیست:
let eligible = false,
required = false;
console.log(eligible || required); // false
در مثال بالا عبارت eligible || required
منجر به تولید خروجی false
میشود زیرا هر دو مقدار false
هستند. با استفاده از توضیحات بالا کاربر ماهیت عملگر منطقی OR و رفتار آن را به عنوان یکی از عملگرهای منطقی در Javascript در هنگام تضاد مقادیر برای تصمیمگیریهای منطقی درک خواهد کرد.
نکته مهم: مشابه عملگر AND، عملگر OR نیز در جاوا اسکریپت به ارزیابی اتصال کوتاه پایبند است. این بدان معناست که اگر اولین مقدار به درستی ارزیابی شود، اپراتور ||
به ارزیابی مقدار دوم نمیپردازد. درک مفهوم ارزیابی اتصال کوتاه برای درک چگونگی عملکرد مؤثر عملگر OR منطقی و تعیین سریع بر اساس مقادیر ارائه شده، بسیار مهم است.
زنجیره سازی عملگر منطقی OR در جاوا اسکریپت
مشابه عملگر &&
که قابلیت زنجیرهسازی داشت، میتوان این قابلیت را برای عملگر منطقی ||
نیز این قابلیت را دارد و میتوان از چند عملگر ||
در عبارتی واحد استفاده کرد که مثال زیر این موضوع را نشان میدهد:
let result = value1 || value2 || value3;
رفتار عملگر منطقی ||
در زنجیره سازی به شرح زیر است:
- این عملگر منطقی مقادیر را از چپ به راست ارزیابی میکند.
- برای هر مقداری که با آن مواجه میشود، آن را به مقدار بولی تبدیل میکند. اگر نتیجه این تبدیل درست باشد، ارزیابی متوقف شده و مقدار فعلی بازگردانده میشود.
- اگر همه مقادیر به عنوان نادرست ارزیابی شوند، عملگر منطقی ||
مقدار نهایی را ارائه میدهد.
در اصل، زنجیرهسازی با عملگر ||
اولین مقدار حقیقتی را که با آن مواجه میشود، یا آخرین مقدار را در صورت یافتن مقدار درست ارائه میدهد.
عملگر بیتی OR در جاوا اسکریپت
عملگر بیتی «OR (|)» در جاوا اسکریپت بیتهای متناظر دو عملوند را بررسی میکند و اگر یکی یا هر دو بیت 1
باشند، نتیجه 1
را بازمیگرداند و اگر هر دو بیت 0
باشند، 0
را به عنوان خروجی به کاربر میدهد. دستور عملگر بیتی OR به شرح زیر است:
a | b
در سینتکس بالا، a
و b
عملوندهای درگیر در عملیات هستند. عملکرد عملگر بیتی OR دقیقاً بر عکس عملکرد عملگر بیتی AND است. در اصل عملگر بیتی OR زمانی که هر یک از بیتها 1
باشند، 1
را بازمیگرداند و 0
را فقط زمانی باز خواهد گرداند که هر دوتا بیت 0
باشند.
مثال زیر نحوه استفاده از این عملگر بیتی را نشان میدهد:
let a = 50; // 00110010
let b = 100; // 01100100
let result = a | b; // 01110110
console.log(result); // 118
در مثال ارائهشده، عملگر بیتی OR هر جفت بیت مربوطه را از راست به چپ تجزیهوتحلیل میکند که در نتیجه، عدد باینری حاصل 01110110
است که در مبنای اعشار به 118
تفسیر میشود. با عمیق شدن در عملگرهای بیتی، درک تفاوت این عملگرها با عملگرهای منطقی در جاوا اسکریپت آسان خواهد شد.
عملگر بیتی XOR در جاوا اسکریپت
عملگر بیتی «(^) XOR» در جاوا اسکریپت بیتهای متناظر دو عملوند را بررسی کرده و فقط زمانی 1
تولید میکند که یکی از آنها 0
و دیگری 1
باشد. یعنی دو عملوند برعکس همدیگر باشند. در غیر این صورت این عملگر 0
را بازمیگرداند. یعنی زمانی که هر دوتا عملوند شبیه هم باشند 0
بازگردانی خواهد شد.
سینتکس عملگر بیتی XOR به شرح زیر است:
a ^ b
در سینتکس فوق، a
و b
عملوندهای شرکت کننده در عملیات هستند. در اصل میتوان اینگونه بیان کرد که رفتار عملگر بیتی XOR منعکسکننده رفتار عملگرهای بیتی OR و AND است. مثال زیر نحوه استفاده از این عملگر بیتی را نشان میدهد:
let a = 50; // 00110010
let b = 100; // 01100100
let result = a ^ b; // 01010110
console.log(result); // 86
در مثال داده شده، عملگر XOR هر جفت بیت مربوطه را از راست به چپ تجزیهوتحلیل میکند و نتیجه را بر اساس بیتهای عملوندها بازمیگرداند. نتیجه عدد باینری عملیات بالا 01010110
بوده که در مبنای اعشار با عدد 86
است.
صحبت از عملگرهای بیتی در میان عملگرهای منطقی در جاوا اسکریپت به درک تفاوتهای میان این عملگرها کمک میکند و به همین خاطر در ادامه چند نوع عملگر بیتی دیگر نیز مورد بررسی قرار خواهند گرفت.
عملگر بیتی شیفت به چپ در جاوا اسکریپت
عملگر جابهجایی یا شیفت به چپ « <<
» در جاوا اسکریپت، جابجایی بیتهای عددی معین به سمت چپ را تسهیل میکند. این عملگر به دو عملوند نیاز دارد: عددی که باید جابجا شود و تعداد بیتهایی که شیفت یا جابهجایی بهوسیله آنها اجرا میشود.
سینتکس عملگر بیتی شیفت به چپ در جاوا اسکریپت به صورت زیر است:
a << b
در سینتکس فوق، a
عملوند عملیات شیفت به چپ را نشان میدهد و b
نشاندهنده تعداد بیتهایی است باید جابهجا شوند. عملکرد عملگر شیفت به چپ منوط به جابجایی هر بیت از عملوند به چپ بهوسیله تعداد تعیین شده بیتهای قابل جابهجایی است. هر بیتی که فراتر از مرزهای عملوند جابجا شود نادیده گرفته میشود. مثال زیر نحوه استفاده از این عملگر را نشان میدهد:
let a = 50; // 00110010
let b = 2;
let result = a << b; // 11001000
console.log(result); // 200
در مثال داده شده بالا، عملگر شیفت به چپ مقدار باینری 00110010
(معادل اعشاری 50
) را دو مکان به سمت چپ منتقل میکند. نتیجه این جابهجایی صورت گرفته مقدار باینری 11001000
است که با مقدار اعشاری 200
مطابقت دارد. تکنیک شیفت یا جابهجایی بیت میتواند در سناریوهای مختلف برنامه نویسی بسیار ارزشمند باشد.
عملگر بیتی شیفت به راست در جاوا اسکریپت
عملگر شیفت یا جابهجایی به سمت راست «>>»
در جاوا اسکریپت امکان جابهجایی به سمت راست بیتها را در عددی خاص فراهم میکند و این در حالی اتفاق میافتد که این عملگر جاوا اسکریپت علامت اصلی عدد را حفظ میکند. این عملگر به دو عملوند نیاز دارد: عددی که باید جابجا شود و تعداد بیتهایی که جابهجایی به وسیله آنها اجرا میشود. سینتکس این عملگر به صورت زیر است:
a >> b
در سینتکس بالا، a
به معنای عملوند برای عملیات شیفت به سمت راست است و b
شان دهنده تعداد بیتهایی است که عملوند به وسیله آنها جابهجا میشود. عملگر شیفت به سمت راست مشابه عملگر شیفت به سمت چپ است و فقط نوعی تمایز کلیدی ظرفیت بین آنها وجود دارد که آنهم حفظ علامت اصلی عدد در عملگر شیفت به راست در حین ایجاد تغییرات است. مثال زیر نحوه استفاده از این عملگر را نشان میدهد:
let a = -50; // 11001110
let b = 2;
let result = a >> b; // 11110011
console.log(result); // -13
در مثال ارائه شده، عملگر شیفت به سمت راست، مقدار اعشاری -50
(دودویی: 11001110
) را دو موقعیت به سمت راست انتقال میدهد که درنهایت مقدار اعشاری -13
را بازگردانی میکند که در مبنای باینری برابر با 11110011
است.
عملگر شیفت به راست بدون علامت در جاوا اسکریپت
عملگر شیفت به راست بدون علامت در جاوا اسکریپت «>>>»
جابجایی به سمت راست بیتها را در عددی معین، همراه با صفر کردن موقعیتهای خالی سمت چپ، امکانپذیر میکند. این عملگر جاوا اسکریپت نیز دو عملوند را میپذیرد. عددی که باید جابجا شود و تعداد بیتهایی که جابهجایی به وسیله آنها اتفاق میافتد. سینتکس این عملگر بیتی در جاوا اسکریپت به صورت زیر است:
a >>> b
در سینتکس فوق، a
نماد عملوند برای عملیات شیفت سمت راست در حالی که b
نشاندهنده مقدار بیتهایی است که باید جابهجا شوند. عملگر شیفت به سمت راست بدون علامت، عملکرد شیفت به سمت راست معمولی را منعکس میکند. با این حال، برخلاف عملگر شیفت به راست معمولی، عملگر شیفت به راست بدون علامت، علامت عدد را هنگام جابجایی حفظ نمیکند. در عوض، عدد را به عنوان نوعی عدد صحیح بدون علامت تفسیر خواهد کرد و یک عدد صفر را در سمت چپترین موقعیت بیت قرار میدهد. مثال زیر نحوه استفاده از این عملگر را بیان میکند:
let a = -5; // 11111111 11111111 11111111 11111011
let b = 2;
let result = a >>> b; // 00111111 11111111 11111111 11111110
console.log(result); // 1073741822
در مثال بالا، عملگر بدون علامت شیفت به سمت راست، نمایش باینری -5
را دو مکان به سمت راست منتقل خواهد کرد که در نتیجه آن علامت عدد حذف شده و مقدار اعشاری 1073741822
به دست خواهد آمد.
تقدم عملگرهای منطقی در جاوا اسکریپت چگونه است؟
هنگام ترکیب چند عملگر منطقی در عبارتی واحد، موتور جاوا اسکریپت دنباله خاصی از ارزیابی را برای این عبارت انجام میدهد. این دنباله که به عنوان «اولویت عملگرها» شناخته میشود، ترتیب ارزیابی عملگرهای منطقی را دیکته میکند. در اصل، اولویت عملگر نوعی سلسلهمراتب ارزیابی عملگر منطقی را در عبارتی ایجاد میکند.
اولویت عملگر منطقی در جاوا اسکریپت به ترتیب عملگر منطقی NOT، عملگر منطقی AND و عملگر منطقی OR هستند. یعنی در این بین عملگر منطقی NOT دارای بالاترین اولویت و عملگر منطقی OR دارای پایینترین اولویت است. درک تقدم عملگرهای منطقی برای پیشبینی دقیق نحوه ارزیابی عبارات مربوط به این عملگرها اهمیت زیادی دارد.
کاربرد عملگرهای بیتی در جاوا اسکریپت چیست؟
عملگرهای بیتی قابلیت دستکاری بیتهای خاص در اعداد باینری را ارائه میدهند. این عملگرها ساخت برنامههای مختلف را با قابلیتهای پیچیدهای امکانپذیر میکنند که ممکن است انجام این عملیاتهای محاسباتی در حالت معمولی چالشبرانگیز باشند. مهارت در استفاده از عملگرهای بیتی و عملگرهای منطقی در جاوا اسکریپت به کاربران کمک میکند کدنویسی کارآمدتری انجام دهند.
تفاوت عملگرهای بیتی و عملگرهای منطقی در جاوا اسکریپت چیست؟
تفاوت اصلی عملگرهای بیتی و عملگرهای منطقی در جاوا اسکریپت در ماهیت اساسی آنها نهفته است. عملگرهای بیتی به طور پیچیده تکتک بیتها را دستکاری میکنند و عملیات را در سطح باینری انجام میدهند. برعکس، عملگرهای منطقی برای تصمیمگیریها استفاده میشوند و بر اساس شرایط چندوجهی تصمیمی اتخاذ میکنند. این تمایز بر نقش اساسی این عملگرها در برنامه نویسی و تأمین نیازهای محاسباتی متمایز تأکید میکند.
در کل میتوان تفاوت این عملگرها را در موارد زیر خلاصه کرد:
- دامنه عملیاتی: عملگرهای بیتی تکتک بیتها را دستکاری کرده و عملیات را در سطح باینری اجرا میکنند. از طرف دیگر عملگرهای منطقی در تصمیمگیری و محاسبات منطق محور مورد استفاده قرار میگیرند.
- عملکرد: عملگرهای بیتی عملیات را روی بیتها انجام میدهند و محاسبات بیتی را پیش میبرند. از طرفی دیگر عملگرهای منطقی با استفاده از مقایسههای منطقی تصمیمگیری را بر اساس شرایط متعدد تسهیل میکنند.
- نماد عملگر: عملگرهای بیتی شامل نمادهایی مانند «&، |، ^، ~، << ، >>»
را در برمیگیرند و از طرفی دیگر عملگرهای منطقی عبارتاند از &&، ||، !
.
- کاربرد: عملگرهای بیتی برای کارهایی که شامل دستکاری و بهینهسازی در سطح بیت هستند استفاده میشوند و در طرف مقابل عملگرهای منطقی نقش محوری در تصمیمگیری، انشعاب و ارزیابیهای مشروط ایفا میکنند.
سخن پایانی
درک عملگرهای منطقی در جاوا اسکریپت برای برنامه نویسی مؤثر با این زبان محبوب بسیار ضروری است در مطلب فوق از مجله فرادرس انواع اپراتورهای منطقی در جاوا اسکریپت به همراه نحوه کاربرد آنها در قالب مثالهای عملی و ساده ارائه شد. در این مطلب ما مفاهیم زیر را یاد گرفتیم.
- عملگر منطقی NOT نوعی مقدار بولی را معکوس میکند. استفاده از عملگر منطقی NOT مضاعف مقادیر را به نمایش بولی واقعی آنها تبدیل خواهد کرد.
- عملگر منطقی AND دو مقدار بولی را ارزیابی میکند و فقط زمانی True
به دست میآید که هر دو عملوند True
باشند.
- عملگر منطقی OR دو مقدار بولی را پردازش کرده و اگر هر یک از عملوندها True
باشند، True
تولید میکند.
- هر دو عملگر منطقی AND و OR از قابلیتی به نام اتصال کوتاه پشتیبانی میکنند. علاوه بر این، این عملگرها را میتوان با مقادیر غیر بولی استفاده کرد.
- اولویت عملگر برای عملیات منطقی به این صورت است که بالاترین اولویت برای NOT، به دنبال آن AND و سپس OR خواهد بود.
همچنین در مطلب فوق انواع عملگرهای بیتی نیز معرفی و مثالهایی برای آنها نیز ارائه شد. به امید اینکه با خواندن این مطلب درک خوبی از عملگرهای بیتی و عملگرهای منطقی در جاوا اسکریپت به دست آورده باشید.
نوشته عملگرهای منطقی در جاوا اسکریپت – از آشنایی تا نحوه کار + مثال و کد اولین بار در فرادرس – مجله. پدیدار شد.