دوستان گرامی سلام ، حالتون که خوبه ؟ با آمووزش عملگرهای مقایسه و منطقی در جاوا اسکریپت در خدمت شما هستیم. عملگرهای منطقی و مقایسه ای برای تشخیص غلط یا صحیح بودن بکار می روند.

عملگرهای مقایسه ای

عملگرهای مقایسه در دستورات منطقی (logical statement) به منظور تشخیص برابری یا تفاوت بین متغیرها (یا مقادیر) بکار می روند.

با در نظر گرفتن اینکه x = 5، جدول زیر عملگرهای مقایسه را شرح می دهد.

عملگر

شرح

مثال

مقدار بازگشتی

==

مساوی

x == 8

false

x == 5

true

===

هم از نظر مقدا و هم از نظر نوع با هم برابر هستند

x === “5”

false

x === 5

true

!=

باهم برابر نیستند

x != 8

true

!==

یا مقدار یکسان نیست و یا از نظر نوع با هم برابر نیستند

x !== “5”

true

x !== 5

false

>

بزرگتر است از

x > 8

false

<

کوچکتر است از

x =

بزرگتر است از یا برابر با

x >= 8

false

<=

کوچکتر و مساوی

x <= 8

true

نحوه ی استفاده از عملگرها

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

if (age < 18) text = "Too young";‎

عملگرهای منطقی (logical operators)

عملگرهای منطقی برای تعیین منطق بین متغیرها و یا مقادیر استفاده می شود.

نظر به اینکه x = 6 و y = 3، جدول زیر عملگرهای منطقی را شرح می دهد.

عملگر

شرح

مثال

&&

and

(x 1) is true

||

or

(x == 5 || y == 5) is false

!

not

!(x == y) is true

عملگرهای شرطی (شرط های سه گانه)

جاوا اسکریپت همچنین دارای یک عملگر شرطی است که مقداری را با توجه به برقرار بودن شرط معینی به متغیر تخصیص می دهد. (?) یک عملگر شرطی است که مقداری را به یک متغیر، مبنی بر درست بودن یک یا چند شرط مشخص انتساب می دهد.

دستور نگارش (syntax) آن به صورت زیر می باشد.

variablename = (condition) ? value1:value‏۲‏

مثال

نمونه یک
?
۱

var voteable = (age < 18) ? "Too young":"Old enough";

چنانچه متغیر age مقداری پایین تر از مقدار ۱۸ داشته باشد، در آن صورت متغیر voteable مقدار "Too young" را خواهد داشت، در غیر این صورت مقدار متغیر voteable، "Old enough" خواهد بود.

مقایسه نوع داده های مختلف با یکدیگر

مقایسه ی داده هایی که از لحاظ نوع با هم تفاوت دارند، نتایج غیر قابل پیش بینی و گاه ناصحیح ارائه می دهد.

به هنگام مقایسه ی رشته با ثابت عددی (numeric constant)، جاوا اسکریپت با عدد به عنوان یک رشته برخورد می کند. نتیجه ای که حاصل می گردد به طور معمول با نتیجه ای که از مقایسه ی عددی (مقایسه ای که هر دو طرف آن عدد باشد) بدست می آید یکی نیست.

به هنگام مقایسه ی دو رشته، " 2 " از " 12 " بزرگتر خواهد بود زیرا که از نظر ترتیب الفبایی ۱ از ۲ کوچکتر محسوب می شود.

جهت کسب نتیجه ای صحیح، باید پیش از اینکه اقدام به مقایسه ی دو رشته کنیم، لازم است متغیرها را به نوع صحیح تبدیل کنیم.

نمونه دو
?
۱
۲
۳
۴
۵
۶

age = Number(age);
if (isNaN(age)) {
voteable = "Error in input";
} else {
voteable = (age < 18) ? "Too young" : "Old enough";
}

نکته

تابع Number() یک رشته ی تهی را به ۰ تبدیل کرده و یک رشته ی غیر عددی را نیز به NaN تغییر می دهد.

عملگرهای بیتی bitwise operator)) جاوا اسکریپت

این نوع عملگرها مبتنی بر اعداد ۳۲ بیتی هستند.

تمام عملوندهای عددی (numeric operand) طی عملیات به اعداد ۳۲ بیتی تبدیل می شوند.

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

مثال

نمونه سه
?
۱
۲
۳
۴
۵

function myFunction() {
document.getElementById(“demo”).innerHTML = 5 & 1;
}

عملگر

شرح

مثال

برابر است با

نتیجه

عدد دهدهی /decimal

&

AND

x = 5 & 1

۰۱۰۱ & 0001

۰۰۰۱

۱

|

OR

x = 5 | 1

۰۱۰۱ | ۰۰۰۱

۰۱۰۱

۵

~

NOT

x = ~ 5

~۰۱۰۱

۱۰۱۰

۱۰

^

XOR

x = 5 ^ 1

۰۱۰۱ ^ ۰۰۰۱

۰۱۰۰

۴

<<

Left shift

x = 5 << 1

۰۱۰۱ <>

Right shift

x = 5 >> 1

۰۱۰۱ >> 1

۰۰۱۰

۲

مثال های بالا از اعداد ۴ بیتی بدون علامت استفاده می کند، در حالی که جاوا اسکریپت از اعداد ۳۲ بیتی علامت دار بهره می گیرد. به همین دلیل نیز در جاوا اسکریپت ~ ۵ هیچگاه ۱۰ برنمی گرداند. ~ ۵ عدد -۶ را بازگردانی می نماید.

~۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱ این نتیجه را برمی گرداند. ۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۰۱۰