دسته بندی
دسترسی سریع
عملگرها (Operators) در جاوا اسکریپت (JavaScript)
محاسبه، مقایسه و منطق در یک نگاه
عملگرهای محاسبه (Arithmetic Operators) در جاوا اسکریپت
عملگر افزایش و کاهش (Increment/Decrement Operators) در جاوا اسکریپت
عملگرهای اختصاص دهنده (Assignment Operators) در جاوا اسکریپت
عملگرهای مقایسه (Comparisons Operators) در جاوا اسکریپت
عملگرهای منطقی (Logical Operators) در جاوا اسکریپت
محاسبه، مقایسه و منطق در یک نگاه
عملگرهای محاسبه (Arithmetic Operators) در جاوا اسکریپت
عملگر افزایش و کاهش (Increment/Decrement Operators) در جاوا اسکریپت
عملگرهای اختصاص دهنده (Assignment Operators) در جاوا اسکریپت
عملگرهای مقایسه (Comparisons Operators) در جاوا اسکریپت
عملگرهای منطقی (Logical Operators) در جاوا اسکریپت
عملگرها (Operators) در جاوا اسکریپت (JavaScript)

پیش از این با زبان جاوا اسکریپت (JavaScript) و کارکردهای آن در صفحات وب تا حدودی آشنا شدیم، گفتیم که این زبان تنها در مرورگر کاربران تفسیر و اجرا می شود (سمت کاربر یا Client-side) و به نوعی در وب محدود به آن است، همچنین مفهوم، نحوه تعریف و استفاده از متغیرها را شناختیم و با مثال هایی از کاربرد آنها تمرین کردیم، اکنون و در این مطلب می خواهیم کمی بیشتر وارد دنیای شیرین و بعضا کمی پیچیده کدنویسی با جاوا اسکریپت شویم و عملگرهای (Operators) محاسبه (Arithmetic)، مقایسه (Comparison) و منطق (Logic) را که جزء همیشگی زبان های برنامه نویسی هستند با هم بررسی کنیم، عملگرهای محاسبه، مقایسه و منطق ابزارهای ضروری جهت کدنویسی برنامه ها هستند، لذا درک صحیح و تسلط بر این مباحث در طی ادامه مسیر آموزش جاوا اسکریپت اهمیت زیادی دارد.
محاسبه، مقایسه و منطق در یک نگاه
شاید در نگاه نخست، عناوین در زبان های برنامه نویسی کمی ترسناک و گیج کننده به نظر برسند و این امری طبیعی در روند یادگیری است، اما همانطور که قبلا گفتیم به طور کلی شیوه نگارش هر زبان برنامه نویسی (Syntax) چیزی نیست جزء مجموعه ای از قوانین تعریف شده توسط انسان برای القای تفکر خود به سیستم در چارچوبی مشخص، یعنی آنچه را که ما به عنوان ایده ذهنی به آن می اندیشیم و هدف نهایی از کدنویسی و طراحی یک برنامه نرم افزاری است را باید با آن قوانین و در بستر قواعد آن زبان برای سیستم ترجمه کنیم و به این ترتیب به مفسر زبان می گوییم که چه وظیفه ای دارد و کجا، کی، چگونه باید رفتار کند و چه خروجی به کاربر بدهد، قاعدتا برای اینکه مفسر و به اصطلاح موتور یک زبان برنامه نویسی چنین قابلیت هایی داشته باشد باید توانایی انجام محاسبات ریاضی، مقایسه مقادیر مختلف با هم و در کل قدرت استدلال داشته باشد، به طور مثال فرض کنیم می خواهیم بین مشتریان یک فروشگاه آنلاین قرعه کشی دوره ای برگزار کنیم و به ازای هر 10,000 تومان خرید 1 امتیاز و به عبارتی یک شانس به آنها اختصاص دهیم، حال اگر بخواهیم در پنل کاربری که به میزان 200,000 تومان فاکتور خرید دارد امتیاز او را محاسبه کرده و نمایش دهیم، باید به چه صورت عمل کنیم؟ همانطور که می دانیم سیستم به زبان ما سخن نمی گوید بلکه باید کدهایی در بستر قواعد نگارشی (Syntax) آن تعریف کنیم تا قابلیت محاسبه، مقایسه و استدلال را داشته باشد، در جاوا اسکریپت بستر را مفسر یا موتور این زبان تعیین می کند و در وب کدهای جاوا اسکریپت توسط مفسری که در مرورگرها وجود دارد تبدیل به خروجی مورد نظر ما می شوند، لذا باید کدهایی بنویسیم که برای مفسر مرورگر قابل فهم و پردازش باشند.
<script type="text/javascript">
var bill = 200000;
var per = 10000;
var point = (bill / per);
if(point >= 1){
alert('امتیاز شما در قرعی کشی فروشگاه: ' + point);
} else{
alert('هنوز هیچ امتیازی کسب نکرده اید!');
}
</script>
در این نمونه کد عبارت if و else دستورات شرطی، علامت / عملگر محاسباتی تقسیم، علامت + عملگر محاسباتی جمع (که برای جمع رشته و عدد به صورت ترکیبی استفاده شده است)، علامت =< عملگر مقایسه ای بزرگتر مساوی و نتیجه مقایسه معمولا به صورت درست (true) یا نادرست (false) است که این فرآیند در کل منطق یا استدلال تعبیر می شود، خروجی مثال بالا به صورت زیر خواهد بود.امتیاز شما در قرعی کشی فروشگاه: 20
در خصوص دستورات شرطی در آموزش های بعدی به صورت جداگانه خواهیم گفت اما در ادامه ی این مطلب به بررسی عملگرهای محاسبه، مقایسه و منطق خواهیم پرداخت.عملگرهای محاسبه (Arithmetic Operators) در جاوا اسکریپت
مانند دیگر زبان های برنامه نویسی، جاوا اسکریپت نیز از محاسبات ریاضی (جمع، تفریق، ضرب و تقسیم) در مفسر خود استفاده می کند، انجام محاسبات معمولا در سورس کد برنامه های کاربردی تحت وب به تعداد زیاد تکرار می شوند لذا همان طور که اشاره شد درک صحیح این مبحث در طی فرآیند آموزش جاوا اسکریپت اهمیت زیادی دارد.
محاسبات در زبان های برنامه نویسی با علائمی تحت عنوان عملگر محاسبه (Arithmetic Operator) صورت می گیرد که عملگرهای ریاضی در جاوا اسکریپت نیز شامل موارد زیر است:
- عملگر جمع (+): از این عملگر برای جمع دو مقدار عددی (Int)، رشته ای (String) یا ترکیب این دو استفاده می شود، مثال (نتیجه در حالت اول برابر 140 و در حالت دوم برابر با عبارت JavaScript خواهد بود):
<script type="text/javascript">
var count_1 = 100;
var count_2 = 40;
var count_add = count_1 + count_2;
alert(count_add);
</script>
<script type="text/javascript">
var str_1 = 'Java';
var str_2 = 'Script';
var str_all = str_1 + str_2;
alert(str_all);
</script>
در برخی زبان های برنامه نویسی برای جمع مقادیر رشته ای با هم یا ترکیب مقادیر رشته ای با عدد از عملگر خاصی استفاده می شود، به طور مثال در PHP از عملگر . (نقطه) بدین منظور استفاده می کنیم، اما در جاوا اسکریپت عملگر + کارکردی دوگانه و ترکیبی دارد یعنی هم برای محاسبات ریاضی و هم جمع مقادیر رشته ای و عددی به کار می رود.- عملگر تفریق (-): از این عملگر صرفا برای کسر دو مقدار عددی (Int) از هم استفاده می شود، مثال (نتیجه برابر 60):
<script type="text/javascript">
var count_1 = 100;
var count_2 = 40;
var count_sub = count_1 - count_2;
alert(count_sub);
</script>
- عملگر ضرب (*): این عملگر نیز برای بدست آوردن حاصل ضرب دو مقدار عددی (Int) کاربرد دارد، مثال (نتیجه برابر 4000):<script type="text/javascript">
var count_1 = 100;
var count_2 = 40;
var count_multi = count_1 * count_2;
alert(count_multi);
</script>
- عملگر تقسیم (/): این عملگر نیز برای بدست آوردن حاصل تقسیم یک عدد بر عدد دیگر مورد استفاده قرار می گیرد، مثال (نتیجه برابر 2.5):<script type="text/javascript">
var count_1 = 100;
var count_2 = 40;
var count_div = count_1 / count_2;
alert(count_div);
</script>
- عملگر باقیمانده بخش پذیری (%): این عملگر باقیمانده بخش پذیری را برمی گرداند، به طور مثال باقیمانده بخش پذیری 12 بر 5 عدد 2 خواهد بود (2 5 تایی در 12 قابل گنجاندن است و باقیمانده مقدار 2 خواهد بود!):<script type="text/javascript">
var count_1 = 12;
var count_2 = 5;
var count_remainder = count_1 % count_2;
alert(count_remainder);
</script>
- عملگر به توان رساندن (**): این عملگر یک مقدار عددی را به توان مقادیر در نظر گرفته شده می رساند، مثال (نتیجه برابر 125):<script type="text/javascript">
var count = 5;
var exponentiation = 3;
var count_exponentiation = count ** exponentiation;
alert(count_exponentiation);
</script>
نکته: عملگر به توان رساندن در حال حاضر در مرحله آزمایشی قرار دارد و ممکن است در تمام مرورگرها به درستی پشتیبانی نشود.عملگر افزایش و کاهش (Increment/Decrement Operators) در جاوا اسکریپت
معمولا در هنگام کدنویسی برنامه ها مواردی پیش می آید که نیاز به افزایش یا کاهش مقدار یک متغیر به میزان یک واحد است، اگرچه در حالت عادی می توانیم این کار را با عملگر جمع یا تفریق انجام دهیم اما برنامه نویسان همیشه به دنبال ساده ترین و در عین حال سریعترین روش ها هستند! از این رو به جهت پرکاربرد بودن این دو عملیات در اغلب زبان های برنامه نویسی عملگرهای جداگانه بدین منظور در نظر گرفته شده است که JavaScript نیز از این قاعده مستثنا نیست، بر این اساس دو علمگر ++ برای افزایش به میزان یک واحد و عملگر -- جهت کاهش به میزان یک واحد برای این هدف استفاده می شوند.
- عملگر افزایش (++): این عملگر یک مقدار عددی را یک واحد افزایش می دهد، مثال (نتیجه برابر 2):
<script type="text/javascript">
var count = 1;
var count_increment = count++;
alert(count_increment);
</script>
- عملگر کاهش (--): این عملگر یک مقدار عددی را یک واحد کاهش می دهد، مثال (نتیجه برابر 1):<script type="text/javascript">
var count = 2;
var count_decrement = count--;
alert(count_decrement);
</script>
دقت کنیم محل قرارگیری علامت ++ و -- در قبل یا بعد از متغیر دارای اهمیت است، اگر علامت قبل از متغیر قرار گیرد، ابتدا مقدار یک واحد افزایش یا کاهش می یابد و سپس مقادیر جدید به اصطلاح برگردانده می شود که به آن Pre Increment/Decrement گفته می شود (Pre به معنی پیش، Increment افزایش و Decrement کاهش)، اما اگر علامت بعد از متغیر قرار گیرد، ابتدا مقادیر برگردانده شده و سپس مقدار یک واحد افزایش یا کاهش می یابد که به آن Post Increment/Decrement گفته می شود (Post به معنی ارسال یا در اصطلاح برنامه نویسی برگرداندن)، مثال:<script type="text/javascript">
var count = 1;
alert(count++);
</script>
در صورت اجرای کد بالا مقدار 1 به صورت پیام نمایش داده خواهد شد، اما اگر کد را به صورت زیر ویرایش کنیم مقدار 2 به خروجی ارسال می شود.<script type="text/javascript">
var count = 1;
alert(++count);
</script>
با توجه به اینکه علامت ++ قبل از متغیر قرار گرفته است، ابتدا مقدار متغیر افزایش و سپس نتیجه برگردانده می شود.برای درک بهتر عملگرهای محاسبه در جاوا اسکریپت مثال کلی به همراه پیش نمایش آنلاین آن را با هم بررسی می کنیم:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | عملگرهای محاسبه در جاوا اسکریپت</title>
<!-- Webgoo.ir -->
<style type="text/css">
body{
font-family:Tahoma, Geneva, sans-serif;
text-align:justify;
font-size:12px;
direction:rtl;
}
.ltr{
direction:ltr;
}
</style>
<script type="text/javascript">
var x = 50;
var y = 20;
var newline = "<br>";
document.write('<div class="ltr">var x = ' + x + ';' + newline + 'var y = ' + y + ';' + '</div>');
document.write(newline);
var addition = x + y;
var subtraction = x - y;
var multiplication = x * y;
var division = x / y;
var remainder = x % y;
var exponentiation = x ** 2;
var increment = ++x;
var decrement = --y;
document.write("عملگر جمع: ");
document.write(newline);
document.write('<div class="ltr">x + y</div>');
document.write('<div class="ltr">' + addition + '</div>');
document.write(newline);
document.write("عملگر تفریق: ");
document.write(newline);
document.write('<div class="ltr">x - y</div>');
document.write('<div class="ltr">' + subtraction + '</div>');
document.write(newline);
document.write("عملگر ضرب: ");
document.write(newline);
document.write('<div class="ltr">x * y</div>');
document.write('<div class="ltr">' + multiplication + '</div>');
document.write(newline);
document.write("عملگر تقسیم: ");
document.write(newline);
document.write('<div class="ltr">x / y</div>');
document.write('<div class="ltr">' + division + '</div>');
document.write(newline);
document.write("عملگر باقیمانده بخش پذیری: ");
document.write(newline);
document.write('<div class="ltr">x % y</div>');
document.write('<div class="ltr">' + remainder + '</div>');
document.write(newline);
document.write("عملگر بتوان رساندن: ");
document.write(newline);
document.write('<div class="ltr">x ** 2</div>');
document.write('<div class="ltr">' + exponentiation + '</div>');
document.write("عملگر افزایش: ");
document.write(newline);
document.write('<div class="ltr">++x</div>');
document.write('<div class="ltr">' + increment + '</div>');
document.write(newline);
document.write("عملگر کاهش: ");
document.write(newline);
document.write('<div class="ltr">--y</div>');
document.write('<div class="ltr">' + decrement + '</div>');
document.write(newline);
</script>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است!
</noscript>
<hr>
جاوا اسکریپت تقریبا از تمام عملیات های محاسباتی پرکاربرد پشتیبانی می کند.
</body>
</html>
پیش نمایشمتغیرهای تعریف شده و محاسبات صورت گرفته در کدهای بالا فرضی و جهت آشنایی بیشتر استفاده شده اند، قاعدتا در کدنویسی برنامه ها تعریف و استفاده از متغیرها و انجام محاسبات بستگی به نیاز و هدف برنامه دارد.
عملگرهای اختصاص دهنده (Assignment Operators) در جاوا اسکریپت
در مباحث پیشین گفتیم که برای اختصاص یک مقدار به متغیر از علامت = در JavaScript استفاده می شود، علامت مساوی را در اصطلاح Assignment Operator یا علامت اختصاص دهنده می گویند، در ادامه خواهیم دید که می توانیم عملگرهای محاسبه و مساوی را با هم ترکیب نموده و عمل محاسبه و اختصاص را به صورت مختصر نویسی انجام دهیم، شیوه مختصرنویسی جهت خواناتر شدن سورس ها و پرهیز از نوشتن کدهای اضافه در برنامه نویسی مورد نیاز است.
علامت =+ معادل عملگر + (جمع) و عملگر = (اختصاص) است، با ترکیب این دو علامت می توانیم ابتدا متغیر را با مقادیر مورد نظر جمع کرده و سپس مقدار جدید را به آن اختصاص دهیم، مثال:
//شیوه عادی
count = count + 5;
//شیوه مختصرنویسی
count += 5;
در صورتی که با دستور alert از متغیر count خروجی بگیریم، با فرض اینکه مقدار اولیه آن برابر با 1 باشد، پس از اعمال عملگر ترکیبی =+ مقدار نهایی برابر با 6 خواهد شد، یادآور می شویم که در نتیجه هیچ تفاوتی بین دو شیوه وجود ندارد، صرفا به جهت خوانا و مختصرنویسی کدها است که استفاده از شیوه ترکیبی در موارد نیاز توصیه می شود.نکته: علامت + و سایر عملگرهای محاسباتی در شیوه مختصرنویسی باید الزاما قبل از علامت = قرار گیرند، در غیر این صورت عملگر ترکیبی به صورت مورد نظر نتیجه نخواهد داد.
علامت =- معادل عملگر - (تفریق) و عملگر = (اختصاص) است، مثال:
//شیوه عادی
count = count - 5;
//شیوه مختصرنویسی
count -= 5;
علامت =* معادل عملگر * (ضرب) و عملگر = (اختصاص) است، مثال://شیوه عادی
count = count * 5;
//شیوه مختصرنویسی
count *= 5;
علامت =/ معادل عملگر / (تقسیم) و عملگر = (اختصاص) است، مثال://شیوه عادی
count = count / 5;
//شیوه مختصرنویسی
count /= 5;
علامت =% معادل عملگر % (باقیمانده بخش پذیری) و عملگر = (اختصاص) است، مثال://شیوه عادی
count = count % 5;
//شیوه مختصرنویسی
count %= 5;
نکته: در جاوا اسکریپت برای مقداردهی به متغیرهای رشته ای نیز از علامت ترکیبی =+ (Concatenation Assignment) استفاده می شود، JavaScript بر خلاف PHP برای رشته متنی و عدد دو علامت ترکیبی مجزا ندارد (در PHP از علامت =. برای رشته استفاده می کنیم اما در JavaScript علامت =+ هم برای متغیرهای عددی و هم رشته ای به کار می رود)، مثال://شیوه عادی
count = count + 'String';
//شیوه مختصرنویسی
count += 'String';
عملگرهای مقایسه (Comparisons Operators) در جاوا اسکریپت
عملگرهای مقایسه (Comparisons Operators) شرایطی را مهیا می کنند که به کمک آنها می توانیم دو طرف یک رابطه را باهم مقایسه کنیم، به طور مثال متغیری فرضی با نام point با مقدار اولیه 12 تعریف کرده ایم.
var point = 12;
حال می خواهیم مقایسه کنیم آیا متغیر point مساوی 12 است؟ برای مقایسه برابری دو طرف در حالت معمول از علامت == استفاده می کنیم.(point == 12)
آیا متغیر point مساوی 13 نیست؟ برای مقایسه برابر نبودن دو طرف از علامت =! استفاده می کنیم (دقت کنیم کاراکتر ! باید در سمت چپ باشد).(point != 13)
مقایسه بالا حالت معمول و عمومی است اما در برنامه نویسی گاهی نیاز داریم که دقیقا مساوی بودن یا نبودن دو طرف رابطه را از هر لحاظ بررسی کنیم (مقایسه محض یا Strict که شامل نوع و مقدار می شود)، بدین منظور به جای علامت == از === و به جای علامت =! از ==! استفاده می کنیم (دقت کنیم کاراکتر ! باید در سمت چپ باشد).(point === 12)
بر اساس مقایسه === عبارت بالا درست (true) خواهد بود ولی مقایسه به صورت زیر نتیجه ی غلط (false) خواهد داشت چرا که مقدار 12 را به صورت عددی (Int) تعریف کرده ایم نه به صورت داده رشته ای (String) لذا نوع داده در مقایسه همسان نیست (Int و String در برنامه نویسی دو نوع متفاوت هستند).(point === "12")
که این مقایسه به دلیل اینکه 12 در متغیر point مقدار عددی و در اینجا مقدار رشته ای است صحیح نخواهد بود (گفتیم که در جاوا اسکریپت هرگاه مقادیر داخل "" یا '' باشد از نوع رشته ای است)، مثال برای حالت نامساوی بودن محض:(point !== 12)
به همین ترتیب برای بررسی کوچکتر بودن علامت > کاربرد دارد.(point < 12)
معنی مقایسه بالا یعنی متغیر point کوچکتر از 12 باشد و برای بررسی بزرگتر بودن از علامت < استفاده می کنیم.(point > 12)
برای مقایسه کوچکتر یا مساوی بودن علامت => کاربرد دارد (دقت کنیم کاراکتر > باید در سمت چپ باشد).(point <= 12)
و برای مقایسه بزرگتر یا مساوی بودن از علامت =< استفاده می کنیم.(point >= 12)
نکته: در آموزش های پیش رو خواهیم دید که عملگرهای مقایسه در کنار دستورات شرطی کامل می شوند و به خودی خود کاربرد خاصی ندارند، مثال:<script type="text/javascript">
var point = 15;
if(point >= 15){
alert(1);
} else{
alert(0);
}
</script>
با توجه به مقایسه بالا و دستور شرطی if و else مقدار 1 به صورت پیام نمایش داده خواهد شد.عملگرهای منطقی (Logical Operators) در جاوا اسکریپت
عملگرهای منطقی (Logical Operators) در جاوا اسکریپت مانند اغلب زبان های برنامه نویسی نقش مکمل را برای عملگرهای مقایسه ای دارند و نتیجه یک رابطه را به صورت true یا false برمی گردانند، بر همین اساس در حالت true نیازی به استفاده از علامت خاصی در Syntax نیست اما برای حالت false از علامت ! (نباشد) در ابتدای مقایسه استفاده می کنیم، برای مقایسه چندگانه نیز علامت && (و) و علامت || (یا) کاربرد دارند، مثال های زیر به درک موضوع کمک خواهند کرد.
(point > 12)
عبارت بالا یعنی اگر متغیر point بزرگتر از 12 باشد رابطه برقرار و مقدار true برگردانده می شود، در این حالت نیازی به استفاده از علامت خاصی نیست، در واقع عملگر منطقی خاصی در این شکل مقایسه استفاده نمی شود!!(point > 12)
عبارت بالا یعنی اگر متغیر point بزرگتر از 12 نباشد رابطه برقرار و مقدار true برگردانده می شود، همان طور که مشخص است در این مقایسه از علامت منطقی ! استفاده شده است.(point > 12 && point < 20)
عبارت بالا یعنی اگر متغیر point بزرگتر از 12 و در عین حال کوچکتر از 20 باشد رابطه برقرار و مقدار true برگردانده می شود، در این رابطه نیز برای بررسی چندگانه از علامت && استفاده کرده ایم و در صورتی کل این رابطه برقرار و true است که نتیجه هر دو مقایسه true باشد.(point > 12 || point < 20)
عبارت بالا یعنی اگر متغیر point بزرگتر از 12 یا کوچکتر از 20 باشد رابطه برقرار و مقدار true برگردانده می شود، در این رابطه نیز برای بررسی چندگانه از علامت || استفاده کرده ایم و در صورتی کل این رابطه برقرار و true است که نتیجه یکی از دو مقایسه true باشد.در خاتمه این آموزش برای جمع بندی مباحثی که در خصوص عملگرها (Operators) فرا گرفتیم، نمونه کد زیر را به همراه پیش نمایش آنلاین آن بررسی می کنیم.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | محاسبه، مقایسه و منطق در جاوا اسکریپت</title>
<!-- Webgoo.ir -->
<style type="text/css">
body{
font-family:Tahoma, Geneva, sans-serif;
text-align:justify;
font-size:12px;
direction:rtl;
line-height:24px;
}
.ltr{
direction:ltr;
}
</style>
<script type="text/javascript">
var A = 100, B = 160, C = 250;
var newline = '<br>';
if((A + B) < C){
document.write('متغیر A با مقدار اولیه ' + A + ' به اضافه ' + B + ' (نتیجه: ' + (A + B) + ') از متغیر C با مقدار اولیه ' + C + ' کوچکتر است!');
} else {
document.write('متغیر A با مقدار اولیه ' + A + ' به اضافه ' + B + ' (نتیجه: ' + (A + B) + ') از متغیر C با مقدار اولیه ' + C + ' بزرگتر است!');
}
document.write(newline);
if(((B - A) * 2) > C){
document.write('متغیر B با مقدار اولیه ' + B + ' منهای A با مقدار اولیه ' + A + ' ضربدر 2 (نتیجه: ' + ((B - A) * 2) + ') از متغیر C با مقدار اولیه ' + C + ' بزرگتر است!');
} else {
document.write('متغیر B با مقدار اولیه ' + B + ' منهای A با مقدار اولیه ' + A + ' ضربدر 2 (نتیجه: ' + ((B - A) * 2) + ') از متغیر C با مقدار اولیه ' + C + ' کوچکتر است!');
}
document.write(newline);
if(A < B && C > B){
document.write('متغیر C با مقدار اولیه ' + C + ' از متغیرهای A با مقدار اولیه ' + A + ' و B با مقدار اولیه ' + B + ' بزرگتر است!');
} else if((A < B || C > A)){
document.write('متغیر A با مقدار اولیه ' + A + ' از متغیر B با مقدار اولیه ' + B + ' کوچکتر یا متغیر C با مقدار اولیه ' + C + ' از متغیر A با مقدار اولیه ' + A + ' بزرگتر است!');
} else if(!(C == A)){
document.write('متغیر C با مقدار اولیه ' + C + ' برابر نیست با متغیر A با مقدار اولیه ' + A + '!');
} else {
document.write('متغیر A با مقدار اولیه ' + A + ' از متغیر B با مقدار اولیه ' + B + ' بزرگتر است یا متغیر C با مقدار اولیه ' + C + ' از متغیر A با مقدار اولیه ' + A + ' کوچکتر است!');
}
</script>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است!
</noscript>
<hr>
- برای بررسی و تست بیشتر نمونه کد می توانیم مقادیر اولیه متغیرها را ویرایش کرده و نتیجه را در مرورگر مشاهده کنیم.
<br>
- در این نمونه کدها از دستورات شرطی if، else if و else استفاده شده است که در این خصوص در آموزش های بعدی به صورت جداگانه توضیح خواهیم داد، برای این مرحله از آموزش کافی است در این حد بدانیم که if به معنی "اگر"، else if به معنی "در غیر این صورت اگر" و else به معنی "در غیر این صورت" است.
<br>
- در هنگام نوشتن اسکریپت های کاربردی معمولا عملگرهای مختلف به صورت ترکیبی مورد استفاده قرار می گیرند و وابسته به یکدیگر هستند، البته قاعدتا هر عملگر معنی و نتیجه خاصی دارد که باید متناسب با هدف برنامه نویس استفاده شود.
</body>
</html>
پیش نمایشعلاوه بر عملگرهای پرکاربردی که مرور کردیم، جاوا اسکریپت از عملگرهای باینری (Bitwise) نیز پشتیبانی می کند که به جهت پیشرفته بودن مبحث، کاربردهای خاص و جلوگیری از پیچیده شدن آموزش، بررسی این موضوع را به مطالب بعدی موکول می کنیم.
دسته بندی: آموزش مقدماتی » JavaScript
برچسب ها: JavaScript

تعریف و استفاده از متغیر (Variable) در جاوا اسکریپت (JavaScript)
توابع (Functions) در جاوا اسکریپت (JavaScript)
شروعی بر برنامه نویسی جاوا اسکریپت (JavaScript)
آرایه (Array) در جاوا اسکریپت (JavaScript)
کار با متد getElementById و innerHTML در جاوا اسکریپت (JavaScript)
دیدگاه


Fatemeh
۲۰:۱۵ ۱۴۰۰/۱۰/۱۰
سلام وقت بخیر
چطوری میتونم یه کد با prompt.window بنویسم که هنگام باز شدن صفحه وب یک عدد از کاربر بگیره و رقم سمت راست رو در یک پنجره دیگه با پیغام مناسب نشون بده؟
ممنون میشم راهنمایی کنید.
چطوری میتونم یه کد با prompt.window بنویسم که هنگام باز شدن صفحه وب یک عدد از کاربر بگیره و رقم سمت راست رو در یک پنجره دیگه با پیغام مناسب نشون بده؟
ممنون میشم راهنمایی کنید.
برای دریافت عدد کاربر و استخراج رقم سمت راست می توانید از نمونه کد زیر الگوبرداری کنید:
<script>
function rightNumber(){
var num = prompt("لطفا یک عدد وارد کنید", 0);
if (num != null && num != ''){
//use + for convert last character to number
var last = +num.toString().split('').pop();
alert("رقم سمت راست: " + last);
}
}
window.onload = function(){rightNumber();};
</script>
mahdi
۰۹:۲۹ ۱۳۹۹/۰۱/۲۳
سلام استاد ، جواب تابع دومی رو فهمیدم چطوری پنج میشه، عددهای بر مبنای 2 که زیر عددهای 101 قرار دارند رو جمع میکنیم میشه 5 ولی کلا این مبحث برام مجهوله اصلا درک نمیکنم با اینها چکار میشه کرد و به چه دردی میخورن
بستگی به موقعیت های مختلف در برنامه دارد که نیاز به بررسی باینری یا خلاصه سازی متدهای متداول جاوا اسکریپت باشد، خود ما تا به حال از این عملگرها بسیار به ندرت استفاده کرده ایم، شاید بیشتر در کدها و توابع آماده در وب که برای انجام محاسبات خاص کاربرد دارند با این موارد مواجه شوید.
mahdi
۲۳:۵۸ ۱۳۹۹/۰۱/۲۲
سلام استاد عزیز و گرامی ، راجع به عملگرهای بیتی یه سوال داشتم ممنون میشم راهنماییم کنی
پارس اینت برای اینکه فقط رقم اولو برگردونه یا عددش کنه، عدد 2 برای اینکه باینری بیس 2 هست و تو استرینگ تبدیل به رشته میکنش بر مبنای 10 که بیس دسیمال هست فقط نفهمیدم چطوری محاسبه میشه که جواب 5 میشه امروز روی عملگرهای بیتی وقت گذاشتم و خیلی چیزا از منابع مختلف یاد گرفتم ولی آخر سرم کاربردشو متوجه نشدم ممنونت میشم راجع به کاربردشم یه توضیح بدی یه سوال دیگه هم داشتم استاد ممنون میشم اینم جواب بدی، من تصمیم گرفتم این زبانها رو بترتیب یاد بگیرم
سوالام زیاد شد خداکنه جواب بدی خیلی مخلصیم بخدا
document.getElementById("h").innerHTML = dec2bin(-5);
function dec2bin(dec){
return (dec >>> 0).toString(2);
در این تابع دقیقا چرا از <<< استفاده شده و اون 0 چرا قرار داده شده و نحوه محاسبش چطوریهdocument.getElementById("i").innerHTML = bin2dec(101);
function bin2dec(bin){
return parseInt(bin, 2).toString(10);
}
چیزی که از این تابع فهمیدم اینه: پارس اینت برای اینکه فقط رقم اولو برگردونه یا عددش کنه، عدد 2 برای اینکه باینری بیس 2 هست و تو استرینگ تبدیل به رشته میکنش بر مبنای 10 که بیس دسیمال هست فقط نفهمیدم چطوری محاسبه میشه که جواب 5 میشه امروز روی عملگرهای بیتی وقت گذاشتم و خیلی چیزا از منابع مختلف یاد گرفتم ولی آخر سرم کاربردشو متوجه نشدم ممنونت میشم راجع به کاربردشم یه توضیح بدی یه سوال دیگه هم داشتم استاد ممنون میشم اینم جواب بدی، من تصمیم گرفتم این زبانها رو بترتیب یاد بگیرم
html, css, js-jquery..., wordpress-seo, php-mysql, kotlin
الان آخرای جاوااسکریپتم، بنظرتون یه استراحتی به ذهنم بدم که تا اینجای کار توی ذهنم بشینه و بعد شروع کنم به آموزش php یا پشت سر هم زبان های دیگه رو هم کم کم شروع کنم و اینکه من جاوااسکریپت رو خوب یاد بگیرم چقدر میتونه در آموزش php بهم کمک کنه که راحت تر یاد بگیرم ، آیا تاثیری داره اصلا؟، برنامه نویسی هم واقعا شیرینه ها :)))سوالام زیاد شد خداکنه جواب بدی خیلی مخلصیم بخدا
در مورد سوال اول در کل عملگرهای باینری (Bitwise) کاربرد عملی چندانی ندارند و اغلب با توابع درونی جاوا اسکریپت می توانیم همان کارها را انجام دهیم، اما محض آگاهی بیشتر این عملگرها بر اساس مقادیر باینری (01) تغییرات یا محاسبه روی آرگیومنت ها که باید اعداد 32 بیتی باشند اعمال می کنند، به فرض dec >>> 0 یعنی مقادیر باینری متغیر dec که با عملگر به صورت انتقال مقادیر باینری dec به میزان تعیین شده (در اینجا میزان 0) به راست با اضافه کردن 0 به ابتدا از چپ و حذف آخرین بیت از راست که در نهایت نتیجه به صورت باینری است و چون با این عملگر 0 در ابتدا قرار می گیرد نتیجه نهایی همیشه عددی مثبت (Unsigned) 32 بیتی است، در اینجا 0 میزان انتقال به راست است که چون 0 است هیچ انتقالی بین بیت ها صورت نمی گیرد (نتیجه اینکه بر روی عدد مثبت تاثیری ندارد اما ظاهرا عدد منفی به یک عدد مثبت تبدیل می شود، خیلی روی این عملگر تمرکز نکرده ایم!)، نام تابع مشخص است که هدف تبدیل Decimal به Binary است!
تابع parseInt برای تبدیل مقادیر غیر عددی به عدد (Integer) کاربرد دارد، این تابع معمولا بدون آرگیومنت دوم استفاده می شود، آرگیومنت دوم مربوط به بحث Radix در ریاضی است که از حوصله بحث خارج است و خوشبختانه خودتان آشنا هستید، خلاصه اینکه با در نظر گرفتن عدد 2 به عنوان رادیکس یعنی مبنای ورودی تابع (آرگیومنت اول) باینری است، به فرض اگر 101 را به عنوان آرگیومنت اول به تابع بدهیم در واقع عدد 5 را داده ایم، مقدار 5 با متد toString به رشته تبدیل و برگشت داده می شود، مقادیر 10 برای toString همان بحث Radix است، 10 مبنای Decimal است!
در کل در پروژه ها کمتر پیش می آید که به این عملگرها نیازمند باشیم در همین حد که آشنایی اولیه داشته باشیم به نظر کافی است اما قابل انکار نیست که مبحث شیرین و پیچیده ای است و برای درگیری ذهنی مناسب است! :)
در مورد سوال آخر در کل برنامه نویسان معمولا در حین کار متوجه گذشت زمان نمی شوند که این ممکن است برای سلامتی مضر باشد، سعی کنید به عنوان یک عادت ساعات کاری را مدیریت کنید و استراحت ذهنی و ورزش را همیشه در برنامه روزانه داشته باشید، بر این مبنا بهتر است چند روز بین مباحث مختلف فاصله وجود داشته باشد، در خصوص تاثیر زبان های مختلف بر هم قطعا کمک می کند اما سمت سرور و سمت کاربر بودن این زبان ها نیاز به نگاه متفاوت دارند که در حین کار متوجه می شوید، در کل تسلط بر جاوا اسکریپت برای یادگیری زبان های دیگر مانند جاوا (برای اندروید) نیز بسیار مفید است.
تابع parseInt برای تبدیل مقادیر غیر عددی به عدد (Integer) کاربرد دارد، این تابع معمولا بدون آرگیومنت دوم استفاده می شود، آرگیومنت دوم مربوط به بحث Radix در ریاضی است که از حوصله بحث خارج است و خوشبختانه خودتان آشنا هستید، خلاصه اینکه با در نظر گرفتن عدد 2 به عنوان رادیکس یعنی مبنای ورودی تابع (آرگیومنت اول) باینری است، به فرض اگر 101 را به عنوان آرگیومنت اول به تابع بدهیم در واقع عدد 5 را داده ایم، مقدار 5 با متد toString به رشته تبدیل و برگشت داده می شود، مقادیر 10 برای toString همان بحث Radix است، 10 مبنای Decimal است!
در کل در پروژه ها کمتر پیش می آید که به این عملگرها نیازمند باشیم در همین حد که آشنایی اولیه داشته باشیم به نظر کافی است اما قابل انکار نیست که مبحث شیرین و پیچیده ای است و برای درگیری ذهنی مناسب است! :)
در مورد سوال آخر در کل برنامه نویسان معمولا در حین کار متوجه گذشت زمان نمی شوند که این ممکن است برای سلامتی مضر باشد، سعی کنید به عنوان یک عادت ساعات کاری را مدیریت کنید و استراحت ذهنی و ورزش را همیشه در برنامه روزانه داشته باشید، بر این مبنا بهتر است چند روز بین مباحث مختلف فاصله وجود داشته باشد، در خصوص تاثیر زبان های مختلف بر هم قطعا کمک می کند اما سمت سرور و سمت کاربر بودن این زبان ها نیاز به نگاه متفاوت دارند که در حین کار متوجه می شوید، در کل تسلط بر جاوا اسکریپت برای یادگیری زبان های دیگر مانند جاوا (برای اندروید) نیز بسیار مفید است.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
https://en.wikipedia.org/wiki/Radix
https://www.calculator.net/binary-calculator.html
محمدرضا
۱۷:۵۸ ۱۳۹۸/۰۳/۲۲
سلام
چرا عملگر های && و OR در جاوا اسکریپت بعضی مواقع خروجی آن ها true یا false نیست
با تشکر
چرا عملگر های && و OR در جاوا اسکریپت بعضی مواقع خروجی آن ها true یا false نیست
با تشکر
ارائه پاسخ دقیق نیاز به بررسی نمونه کد مد نظر است، به هر صورت ممکن است به فرض متغیر بررسی شده از قبل تعریف نشده باشد و با خطا مواجه شویم یا Syntax دستورات دچار اشکال تایپی باشد.
رامین
۲۲:۴۸ ۱۳۹۷/۱۱/۱۲
سلام
چجوری بنویسم ۳ تا متغیر که ۳۰ و ۲۰ و ۱۵ هستند از ۶۰ بیشتر نشود
چجوری بنویسم ۳ تا متغیر که ۳۰ و ۲۰ و ۱۵ هستند از ۶۰ بیشتر نشود
سوالتان مبهم است!، لطفا بیشتر توضیح دهید تا امکان راهنمایی وجود داشته باشد.
محمود
۰۹:۳۹ ۱۳۹۷/۰۴/۲۳
سلام و وقت بخیر.
آیا می شود با حلقۀ for مجموع اعداد یک ستون از جدول را بصورت خودکار تا رسیدن به یک عدد بخصوص در پایین آن درج کرد . لطفن کمک کنید.
مانند مثال زیر.
آیا می شود با حلقۀ for مجموع اعداد یک ستون از جدول را بصورت خودکار تا رسیدن به یک عدد بخصوص در پایین آن درج کرد . لطفن کمک کنید.
مانند مثال زیر.
for ( i = x; k<=40; k=x+i)
قاعدتا چنین کاری شدنی است، منتها بسته به فرمت HTML خروجی جدول و اینکه چه تعداد سطر و ستون مد نظر است کدنویسی متفاوت خواهد بود، در مجموع با متد زیر می توان به سطر و ستون مورد نظر دسترسی داشت و مقدار آن را استخراج کرد:
document.getElementById("tbl_id").rows[0].cells[0].innerHTML
این کد مقدار سطر اول از ستون اول جدول را استخراج می کند، برای حالت داینامیک به جای 0 می توانیم از متغیر استفاده کنیم.بهنام
۰۱:۰۵ ۱۳۹۲/۱۱/۳۰
سلام
نخیر در بلاگفا انجام دادم
متد window.onload فقط می فهماند که فقط صفحه بالا اومد اون کارها را انجام بده ولی میگم یک متد یا تابع دیگه ای نیست که بفهماند صفحه به طول کامل بارگذاری شد به طوری که صفحه از لودینگ بایستد اگر هست توضیح دهید ممنونم
نخیر در بلاگفا انجام دادم
متد window.onload فقط می فهماند که فقط صفحه بالا اومد اون کارها را انجام بده ولی میگم یک متد یا تابع دیگه ای نیست که بفهماند صفحه به طول کامل بارگذاری شد به طوری که صفحه از لودینگ بایستد اگر هست توضیح دهید ممنونم
window.onload یک متد استاندارد است و معمولا نیازی به استفاده از روش های جایگزین نیست، روش های دیگر استفاده از رویداد onload در تگ body و اگر از جی کئوری استفاده کنید، متد document.ready قابل استفاده است.
بهنام
۱۰:۵۷ ۱۳۹۲/۱۱/۲۹
سلام
از آموزش های مفید جاوا اسکریپت بسیار ممنون
من یک کد بارگذاری نوشتم ولی درست عمل نکرد میخواهم وقتی صفحه کامل لود شد یعنی از حالت لودینگ ایستاد کل محتوای وب نمایش داده بشه
از آموزش های مفید جاوا اسکریپت بسیار ممنون
من یک کد بارگذاری نوشتم ولی درست عمل نکرد میخواهم وقتی صفحه کامل لود شد یعنی از حالت لودینگ ایستاد کل محتوای وب نمایش داده بشه
<script type="text/javascript">
//<![CDATA[
window.onload = function(){
document.getElementById("amir").style.display = "block";
}
//]]>
</script>
<div id="amir" style="display:none;">
محتوای وب
</div>
میخواهم وقتی که صفحه لود شد display = block
شود ولی قبل از اینکه صفحه لود شود این عمل انجام میپذریدمتد window.onload در اکثر مرورگر ها به خوبی پشتیبانی می شود، امکان دارد تست را در لوکال انجام داده باشید (که سرعت بارگذاری معمولا بسیار بالا است)، صفحه خود را در سرور و به صورت آنلاین تست نمائید، سعی کنید از alert برای خطایابی استفاده کنید.
رضا
۱۷:۴۵ ۱۳۹۲/۰۸/۰۵
می بخشید میشه راهنمایی کنید ایراد این قطعه کد چیه من هر کاری میکنم no بر میگرده در حالی که display مربوطه برابر با block هست
if(document.getElementById("castel").style.display=="block")
alert("yes")
else
alert("no")
ایرادی در کدهای شما دیده نمی شود، ممکن است مشکل از جای دیگری باشد، به فرض id صحیح نباشد (حساس به حروف بزرگ و کوچک) یا پیش از دسترسی مفسر جاوا اسکریپت به تگ HTML در DOM، کدها را فراخوانی کرده باشید، در این صورت راه حل مشکل این است که یا کدها را بعد از تگ قرار دهید یا از نمونه کد زیر استفاده کنید:
<div id="castel"></div>
<script type="text/javascript">
window.onload = function(){
if(document.getElementById("castel").style.display=="block")
alert("yes")
else
alert("no")
}
</script>
۱۴:۰۹ ۱۳۹۲/۰۶/۲۷
خیلی سایت جامع و کاملی دارین! امیدوارم به همین صورت در این راه قدم بردارید. براتون آرزوی موفقیت و بهروزی دارم.
با تشکر
با تشکر
خیلی ممنون از نظر لطف شما.
۱۹:۴۵ ۱۳۹۲/۰۵/۳۱
واقعا مفید و کامل بود
ممنون از مقالتون
ممنون از مقالتون
۰۰:۱۸ ۱۳۹۲/۰۴/۱۳
ببخشید یه سوال دیگه هم داشتم اینه که چطور میتونم متغیر های php رو در java مورد برسی قرار بدم مثلا شرط ها و توی جاوا بررسی کنم؟
بررسی شرط های PHP در JavaScript امکانپذیر نیست، PHP یک زبان سمت سرور (در سرور اجرا می شود) و JavaScript یک زبان اسکریپت نویسی سمت کاربر (در مرورگر اجرا می شود)!
تنها می توانید کدهای جاوا اسکریپت را به وسیله PHP به صورت داینامیک تولید کنید، یعنی کدها ابتدا توسط PHP پردازش و هر کجا نیاز بود، مقادیری جایگزین و سپس کد جاوا اسکریپت به صورت خروجی HTML تولید می شود، مثال:
تنها می توانید کدهای جاوا اسکریپت را به وسیله PHP به صورت داینامیک تولید کنید، یعنی کدها ابتدا توسط PHP پردازش و هر کجا نیاز بود، مقادیری جایگزین و سپس کد جاوا اسکریپت به صورت خروجی HTML تولید می شود، مثال:
<?php
$var = 1;
echo '<script type="text/javascript">
alert('.$var.');
</script>';
?>
۰۰:۱۶ ۱۳۹۲/۰۴/۱۳
تو عمرم برای کسی این طوری که برای شما آرزوی خوشبختی کردم آرزو نکرده بودم.
با چه برنامه کدها را می نویسید که وقتی از حروف و متغیر با حرف فارسی استفاده می کنید. به هم نمیریزه؟
من با
با چه برنامه کدها را می نویسید که وقتی از حروف و متغیر با حرف فارسی استفاده می کنید. به هم نمیریزه؟
من با
notepad++
کار می کنم جونم رو به لبم رسونده.نظر لطف شما است.
برنامه ++Notepad ویرایشگر سبک، ساده و خوبی است، منتها برای حروف فارسی باید از قسمت View گزینه Text Direction RTL را انتخاب کنید.
برای کدنویسی حرفه ای برنامه فوق مناسب نیست و صرفا برای موارد خاصی کاربرد دارد، توصیه می کنیم از یکی از نرم افزارهای زیر استفاده کنید:
- Adobe Dreamweaver بسیار حرفه ای و قدرتمند.
- NetBeans IDE برنامه ای متن باز و حرفه ای، با امکان پشتیبانی از دیگر زبان های برنامه نویسی مانند Java و ...
برنامه ++Notepad ویرایشگر سبک، ساده و خوبی است، منتها برای حروف فارسی باید از قسمت View گزینه Text Direction RTL را انتخاب کنید.
برای کدنویسی حرفه ای برنامه فوق مناسب نیست و صرفا برای موارد خاصی کاربرد دارد، توصیه می کنیم از یکی از نرم افزارهای زیر استفاده کنید:
- Adobe Dreamweaver بسیار حرفه ای و قدرتمند.
- NetBeans IDE برنامه ای متن باز و حرفه ای، با امکان پشتیبانی از دیگر زبان های برنامه نویسی مانند Java و ...
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.