
عملگر چیست؟
اجازه دهید عبارت ساده 4 + 5 برابر با 9 را در نظر داشته باشیم. در اینجا 4 و 5 عملوند و + را عملگر می نامند. جاوااسکریپت از انواع عملگرهای زیر پشتیبانی می کند.
- عملگرهای ریاضی
- عملگرهای مقایسه ای
- عملگرهای منطقی (یا نسبی)
- عملگرهای تخصیصی
- عملگرهای شرطی (یا سه ارزشی)
عملگرهای ریاضی
جاوااسکریپت از عملگرهای ریاضی زیر پشتیبانی می کند.
فرض کنید که متغیر A مقدار 10 و متغیر B مقدار 20 را در خود جای داده اند
شماره | عملگر و توضیح |
1 | + (افزودن) افزودن دو عملوند مثلا: A + B مقدار 30 را خواهد داد |
2 | – (منها) منهای عملوند دوم از اول مثلا: A-B مقدار 10- خواهد داد |
3 | * (ضرب) ضرب دو عملوند مثلا: A*B مقدار 200 خواهد داد |
4 | / (تقسیم) تقسیم مقسوم توسط مقسوم علیه مثلا: B/A مقدار 2 خواهد داد |
5 | % (باقیمانده) مقدار صحیح باقیمانده حاصل از تقسیم دو عدد را می دهد مثلا: B%A مقدار 0 خواهد داد |
6 | ++ (فزاینده) مقدار یک عدد صحیح را یک عدد افزایش می دهد مثلا ++A مقدار 11 خواهد داد |
7 | — (کاهنده) مقدار یک عدد صحیح را یک عدد کاهش می دهد مثلا –A مقدار 9 خواهد داد |
به خاطر داشته باشید که عملگر افزودن (+) با اعداد و همینطور رشته کار می کند. مثلا عبارت a + 10 مقدار “a10” خواهد داد.
مثال: کد زیر نشان می دهد که چگونه از عملگرهای ریاضی در جاوااسکریپت استفاده کنیم.
<html> <body> <script type = "text/javascript"> <!-- var a = 33; var b = 10; var c = "Test"; var linebreak = "<br />"; document.write("a + b = "); result = a + b; document.write(result); document.write(linebreak); document.write("a - b = "); result = a - b; document.write(result); document.write(linebreak); document.write("a / b = "); result = a / b; document.write(result); document.write(linebreak); document.write("a % b = "); result = a % b; document.write(result); document.write(linebreak); document.write("a + b + c = "); result = a + b + c; document.write(result); document.write(linebreak); a = ++a; document.write("++a = "); result = ++a; document.write(result); document.write(linebreak); b = --b; document.write("--b = "); result = --b; document.write(result); document.write(linebreak); //--> </script> Set the variables to different values and then try... </body> </html>
خروجی:
a + b = 43 a - b = 23 a / b = 3.3 a % b = 3 a + b + c = 43Test ++a = 35 --b = 8 Set the variables to different values and then try...
عملگرهای مقایسه ای
جاوااسکریپت از عملگرهای مقایسه ای زیر پشتیبانی می کند.
فرض کنید که متغیر A مقدار 10 و متغیر B مقدار 20 را در خود جای داده است.
شماره | عملگر و توضیح |
1 | == (برابری) بررسی می کند که آیا مقدار دو عملوند برابر هستند یا خیر، سپس شرط صحیح می شود مثلا: (A==B) مقدار true نمی دهد |
2 | =! (نابرابر) بررسی می کند که آیا دو عملوند برابر هستند یا خیر، سپس در صورت عدم برابری مقدار true باز میگرداند مثلا: (A!=B) مقدار true می دهد |
3 | < (بزرگتر از) بررسی می کند که آیا مقدار عملوند سمت چپ بزرگتر از مقدار عملوند راست باشد و در این صورت مقدار true می دهد مثلا: (A>B) برابر با true است |
4 | > (کوچکتر از) بررسی می کند که آیا مقدار عملوند سمت چپ کوچکتر از مقدار عملوند راست باشد و در این صورت مقدار true می دهد مثلا: (A<B) برابر با true نیست |
5 | =< (بزرگتر یا مساوی با) بررسی می کند که آیا مقدار عملوند سمت چپ بزرگتر و مساوی با مقدار عملوند راست باشد و در این صورت مقدار true می دهد مثلا: (A>=B) برابر با true نیست |
6 | => (کوچکتر یا مساوی با) بررسی می کند که آیا مقدار عملوند سمت چپ کوچکتر و مساوی با مقدار عملوند راست باشد و در این صورت مقدار true می دهد مثلا: (A<=B) برابر با true است |
مثال: کد زیر نشان می دهد که چگونه می توانید از عملگرهای مقایسهای در جاوااسکریپت استفاده کنید.
<html> <body> <script type = "text/javascript"> <!-- var a = 10; var b = 20; var linebreak = "<br />"; document.write("(a == b) => "); result = (a == b); document.write(result); document.write(linebreak); document.write("(a < b) => "); result = (a < b); document.write(result); document.write(linebreak); document.write("(a > b) => "); result = (a > b); document.write(result); document.write(linebreak); document.write("(a != b) => "); result = (a != b); document.write(result); document.write(linebreak); document.write("(a >= b) => "); result = (a >= b); document.write(result); document.write(linebreak); document.write("(a <= b) => "); result = (a <= b); document.write(result); document.write(linebreak); //--> </script> Set the variables to different values and different operators and then try... </body> </html>
خروجی به این صورت است:
(a == b) => false (a < b) => true (a > b) => false (a != b) => true (a >= b) => false a <= b) => true Set the variables to different values and different operators and then try...
عملگرهای منطقی
جاوااسکریپت از عملگرهای منطقی زیر پشتیبانی می کند. فرض کنید که A مقدار 10 و متغیر B مقدار 20 را در خود نگاه داشته است.
شماره | عملگر و توضیح |
1 | && (AND منطقی) اگر هر دو عملوند غیرصفر باشند، سپس مقدار شرط true خواهد شد. مثلا: (A && B) مقدار true خواهد داد |
2 | || (OR منطقی) اگر یکی از دو عملوند غیرصفر باشند مقدار true خواهد داد. مثلا: (A && B) مقدار true خواهد داد |
3 | ! (NOT منطقی) وضعیت منطقی عملوند خود را نقیض خواهد کرد. اگر شرط true باشد سپس این عملگر شرط را false خواهد کرد مثلا: (A&&B)! مقدار false خواهد داد |
مثلا: کد زیر را بررسی کنید تا به شکل دقیقتری به عملکرد عملگرهای منطقی در جاوااسکریپت پی ببرید.
<html> <body> <script type = "text/javascript"> <!-- var a = true; var b = false; var linebreak = "<br />"; document.write("(a && b) => "); result = (a && b); document.write(result); document.write(linebreak); document.write("(a || b) => "); result = (a || b); document.write(result); document.write(linebreak); document.write("!(a && b) => "); result = (!(a && b)); document.write(result); document.write(linebreak); //--> </script> <p>Set the variables to different values and different operators and then try...</p> </body> </html>
خروجی
(a && b) => false (a || b) => true !(a && b) => true Set the variables to different values and different operators and then try...
عملگرهای بیتی
جاوااسکریپت از عملگرهای بیتی نیز پشتیبانی میکند. فرض کنید که A مقدار 2 و B مقدار 3 را در خود داشته باشد.
شماره | عملگر و توضیح |
1 | & (AND بیتی) عملیات AND بولینی را بر هر بیت از اعداد صحیح اعمال می کند. مثلا: (A&B) مقدار 2 می دهد. |
2 | | (OR بیتی) عملیات OR بولینی را بر هر بیت از اعداد صحیح صورت می دهد. مثلا: (A|B) مقدار 3 می دهد. |
3 | ^ (XOR بیتی) عملیات OR انحصاری بولینی را بر روی هر بیت از اعداد انجام می دهد. OR انحصاری بدین معناست که یا عملوند اول true باشد یا دوم، اما نه هر دو. مثلا: (A^B) مقدار 1 خواهد داد. |
4 | ~ (نقیض بیتی) این عملگر تمام بیت ها را نقیض خواهد کرد. مثلا: (B~) مقدار 4- دارد. |
5 | >> (شیفت به چپ) این عملگر تمام بیت های اولین عملوند را به اندازه عدد دومین عملوند به سمت چپ حرکت خواهد داد. بیت های جدید با مقدار صفر پر خواهند شد. جابجایی یک مقدار به سمت چپ به اندازه یک موقعیت، برابر با ضرب آن عدد در 2 و جابجایی 2 موقعیت برابر با ضرب در 4 و همینطور … می باشد. مثلا: (A<<1) مقدار 4 می دهد. |
6 | << (شیفت به راست) عملگر شیفت به راست دودویی. مقدار عملوند چپ را به تعداد عملوند دوم به سمت راست جابجا خواهد کرد. مثلا: (A>>1) برابر با مقدار 1 است. |
7 | <<< (شیفت به راست با مقدار صفر) این عملگر درست مانند عملگر << است جز اینکه بیت های جابجا شده در سمت چپ همواره مقدار صفر خواهند بود. مثلا: (A>>>1) مقدار 1 خواهد داد. |
مثال
کد زیر را برای آشنایی بیشتر با عملگر بیتی در جاوااسکریپت نگاه کنید.
<html> <body> <script type = "text/javascript"> <!-- var a = 2; // Bit presentation 10 var b = 3; // Bit presentation 11 var linebreak = "<br />"; document.write("(a & b) => "); result = (a & b); document.write(result); document.write(linebreak); document.write("(a | b) => "); result = (a | b); document.write(result); document.write(linebreak); document.write("(a ^ b) => "); result = (a ^ b); document.write(result); document.write(linebreak); document.write("(~b) => "); result = (~b); document.write(result); document.write(linebreak); document.write("(a << b) => "); result = (a << b); document.write(result); document.write(linebreak); document.write("(a >> b) => "); result = (a >> b); document.write(result); document.write(linebreak); //--> </script> <p>Set the variables to different values and different operators and then try...</p> </body> </html>
خروجی به صورت زیر خواهد بود:
(a & b) => 2 (a | b) => 3 (a ^ b) => 1 (~b) => -4 (a << b) => 16 (a >> b) => 0 Set the variables to different values and different operators and then try...
عملگرهای تخصیصی
جاوااسکریپت از عملگرهای تخصیصی به صورت زیر پشتیبانی می کند.
شماره | عملگر و توضیح |
1 | = (تخصیصی ساده) مقادیر را از طریف عملوندهای سمت راست به عملوند سمت چپ منتقل می کند. مثلا: C=A+B مقدار A+B را به متغیر C تخصیص خواهد داد. |
2 | =+ (افزودن و تخصیص) عملوند راست را به عملوند چپ افزوده و نتیجه را به عملوند سمت چپی انتقال می دهد. مثلا: C+=A برابر است با C=C+A |
3 | =- (کسر کردن و تخصیص) عملوند راست را از عملوند چپ کسر کرده و نتیجه را به عملوند سمت چپی انتقال می دهد. مثلا: C-=A برابر است با C=C-A |
4 | =* (ضرب کردن و تخصیص) عملوند راست را در عملوند چپ ضرب کرده و نتیجه را به عملوند سمت چپی انتقال می دهد. مثلا: C*=A برابر است با C=C*A |
5 | =/ (تقسیم کردن و تخصیص) عملوند چپ را بر عملوند راست تقسیم کرده و نتیجه را به عملوند سمت چپی انتقال می دهد. مثلا: C/=A برابر است با C=C/A |
6 | =% (باقیمانده و تخصیص) باقیمانده حاصل تقسیم دو عملوند را به دست آورده و نتیجه را به عملوند سمت چپی انتقال می دهد. مثلا: C%=A برابر است با C=C%A |
مثال زیر را در خصوص عملگرهای تخصیصی ملاحظه کنید:
<html> <body> <script type = "text/javascript"> <!-- var a = 33; var b = 10; var linebreak = "<br />"; document.write("Value of a => (a = b) => "); result = (a = b); document.write(result); document.write(linebreak); document.write("Value of a => (a += b) => "); result = (a += b); document.write(result); document.write(linebreak); document.write("Value of a => (a -= b) => "); result = (a -= b); document.write(result); document.write(linebreak); document.write("Value of a => (a *= b) => "); result = (a *= b); document.write(result); document.write(linebreak); document.write("Value of a => (a /= b) => "); result = (a /= b); document.write(result); document.write(linebreak); document.write("Value of a => (a %= b) => "); result = (a %= b); document.write(result); document.write(linebreak); //--> </script> <p>Set the variables to different values and different operators and then try...</p> </body> </html>
خروجی به شکل زیر خواهد بود
Value of a => (a = b) => 10 Value of a => (a += b) => 20 Value of a => (a -= b) => 10 Value of a => (a *= b) => 100 Value of a => (a /= b) => 10 Value of a => (a %= b) => 0 Set the variables to different values and different operators and then try...
سایر عملگرها
دو عملگر دیگر به نام های عملگر شرطی و عملگر typeof وجود دارد که در زیر درباره آنها توضیح داده شده است.
عملگر شرطی (:?)
عملگر شرطی در ابتدا عبارت را بررسی و مقدار true یا false بودن آن را بررسی می کند سپس یکی از دو عبارت را بسته به نتیجه به دست آمده از شرط اجرا می کند.
شماره | عملگر و توضیح |
1 | : ? (شرطی) اگر شرط صحیح باشد ? مقدار X : در غیر این صورت مقدار Y |
مثال: کد زیر را برای درک بهتر عملکرد این عملگر مشاهده کنید.
<html> <body> <script type = "text/javascript"> <!-- var a = 10; var b = 20; var linebreak = "<br />"; document.write ("((a > b) ? 100 : 200) => "); result = (a > b) ? 100 : 200; document.write(result); document.write(linebreak); document.write ("((a < b) ? 100 : 200) => "); result = (a < b) ? 100 : 200; document.write(result); document.write(linebreak); //--> </script> <p>Set the variables to different values and different operators and then try...</p> </body> </html>
خروجی
((a > b) ? 100 : 200) => 200 ((a < b) ? 100 : 200) => 100 Set the variables to different values and different operators and then try...
عملگر typeof
عملگر typeof یک عملگر یگانی است که پیش از اولین عملوند قرار می گیرد که می تواند از هر نوعی باشد. مقدار آن رشته ای است که نشاندهنده نوع داده عملوند می باشد.
عملگر typeof برای number، string و boolean بودن بررسی صورت می دهد و در صورت صحیح بودن مقدار true باز می گرداند.
مثلا زیر را در همین رابطه ملاحظه کنید:
<html> <body> <script type = "text/javascript"> <!-- var a = 10; var b = "String"; var linebreak = "<br />"; result = (typeof b == "string" ? "B is String" : "B is Numeric"); document.write("Result => "); document.write(result); document.write(linebreak); result = (typeof a == "string" ? "A is String" : "A is Numeric"); document.write("Result => "); document.write(result); document.write(linebreak); //--> </script> <p>Set the variables to different values and different operators and then try...</p> </body> </html>
خروجی به صورت زیر خواهد بود:
Result => B is String Result => A is Numeric Set the variables to different values and different operators and then try...