عملگرها در جاوااسکریپت
عملگرهای محاسباتی، مقایسهای و منطقی جاوااسکریپت بههمراه رشتههای قالبی (Template Literals) برای ساختن متنهای ترکیبی.
آنچه در این درس میآموزید
- محاسبات عددی را با عملگرهای حساب انجام دهید
- مقادیر را درست مقایسه کنید و بدانید چرا === انتخاب درست است
- با عملگرهای منطقی و رشتههای قالبی عبارتهای پیچیدهتر بسازید
فهرست مطالب
عملگرها نمادهایی هستند که روی مقادیر کار انجام میدهند: دو عدد را جمع میکنند، دو مقدار را مقایسه میکنند یا چند شرط را با هم ترکیب میکنند. در این درس عملگرهای پرکاربرد جاوااسکریپت را میبینیم و در پایان با رشتههای قالبی (Template Literals) راه تمیزِ ساختن متنهای ترکیبی را یاد میگیریم.
عملگرهای محاسباتی
console.log(7 + 3);
console.log(7 - 3);
console.log(7 * 3);
console.log(7 / 3);
console.log(7 % 3);
console.log(2 ** 4);10 4 21 2.3333333333333335 1 16
چهار عملگر نخست همان جمع، تفریق، ضرب و تقسیم آشنا هستند. دو مورد دیگر تازهاند:
%«باقیماندهٔ تقسیم» میدهد؛7 % 3یعنی باقیماندهٔ تقسیم ۷ بر ۳ که ۱ است. کاربرد مهمش تشخیص زوج و فرد است: اگرn % 2صفر باشد،nزوج است.**توان است؛2 ** 4یعنی ۲ به توان ۴.
دقت کنید تقسیم میتواند اعشاری شود؛ در جاوااسکریپت عددهای صحیح و اعشاری یک نوع دارند، پس 7 / 3 همان ۲٫۳۳... چاپ میشود.
جمع رشتهها
وقتی عملگر + به رشتهها برسد معنایش عوض میشود: رشتهها را به هم میچسباند.
const first = "Java";
const second = "Script";
console.log(first + second);
console.log("Age: " + 25);JavaScript Age: 25
در خط آخر، عدد ۲۵ خودبهخود به رشته تبدیل و به متن چسبیده شد؛ به این کار «تبدیل ضمنی» (Implicit Conversion) میگویند. همین رفتار گاهی به دردسر باز میکند، بهخصوص در مقایسهها.
مقایسه با ===
console.log(5 === 5);
console.log("5" === 5);
console.log("5" == 5);
console.log(1 === "1");true false true false
این خروجیها کل ماجرا را میگویند:
===برابری «سختگیرانه» را بررسی میکند: هم مقدار باید برابر باشد، هم نوع. رشتهٔ"5"با عدد5از نظر نوع فرق دارند، پس"5" === 5مقدارfalseمیدهد.==برابری «آسانگیرانه» است: پیش از مقایسه تلاش میکند نوعها را به هم تبدیل کند؛ برای همین"5" == 5مقدارtrueمیدهد. این تبدیلهای پنهان منبع خطاهای سختیابیاند.
پارتنر برابر سختگیرانه، نامساوی سختگیرانه !== است. همچنین عملگرهای < و > و <= و >= برای مقایسهٔ کمتر و بیشتر به کار میروند و نتیجهشان همیشه بولی است.
عملگرهای منطقی
برای ترکیب شرطها سه عملگر داریم: && (و)، || (یا) و ! (نقیض).
const age = 20;
const hasTicket = true;
console.log(age >= 18 && hasTicket);
console.log(age < 18 || hasTicket);
console.log(!hasTicket);true true false
&&فقط وقتیtrueمیدهد که هر دو طرف درست باشند؛ ورود به سالن سینما هم بزرگبودن میخواهد هم بلیت.||وقتیtrueمیدهد که دستکم یک طرف درست باشد.!درست را نادرست و نادرست را درست میکند.
رشتههای قالبی
چسباندن متن با + وقتی طولانی میشود، خوانا نمیماند. «رشتهٔ قالبی» (Template Literal) با بکتیک ` نوشته میشود و اجازه میدهد مقدار هر متغیر را با ${} مستقیم داخل متن بگذارید.
const user = "Kian";
const score = 17.5;
console.log(`${user} scored ${score}.`);Kian scored 17.5.
داخل ${} هر عبارت مجازی است؛ ${score + 2} هم کار میکند و ۱۹٫۵ را جایگذاری میکند. از این پس هرجا متن و متغیر را باید ترکیب کنید، از رشتهٔ قالبی استفاده کنید.
تمرینها
تمرین
تمرین ۱ — تبدیل ثانیه به دقیقه و ثانیه
متغیری به نام totalSeconds با مقدار ۳۷۰۰ بسازید. با عملگر % و تابع Math.floor (کف یک عدد اعشاری را میگیرد، یعنی Math.floor(61.66) میشود ۶۱) تعداد دقیقه و ثانیهٔ باقیمانده را حساب کنید و جملهای چاپ کنید که خروجی آن دقیقاً «61 minutes and 40 seconds» باشد.
// Write your code hereنمایش راهحل
const totalSeconds = 3700;
const minutes = Math.floor(totalSeconds / 60);
const seconds = totalSeconds % 60;
console.log(`${minutes} minutes and ${seconds} seconds`);61 minutes and 40 seconds
::: :::
خلاصه
- عملگرهای حساب
+،-،*،/هستند و%باقیمانده و**توان میدهد. +روی رشتهها یعنی چسباندن؛ عددها هم در این حالت به رشته تبدیل میشوند.- برای مقایسه همیشه از
===و!==استفاده کنید؛==با تبدیل ضمنی نوع، خطاخیز است. &&،||و!شرطها را ترکیب میکنند.- رشتهٔ قالبی با بکتیک و
${}جایگذاری متغیر در متن را ساده و خوانا میکند.
با این ابزارها آمادهاید در درس بعدی به برنامهتان قدرت تصمیمگیری بدهیم: شرطها.