جاوااسکریپتمقدماتی۶ دقیقه مطالعهECMAScript 2023+

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

عملگرهای محاسباتی، مقایسه‌ای و منطقی جاوااسکریپت به‌همراه رشته‌های قالبی (Template Literals) برای ساختن متن‌های ترکیبی.

آنچه در این درس می‌آموزید

  • محاسبات عددی را با عملگرهای حساب انجام دهید
  • مقادیر را درست مقایسه کنید و بدانید چرا === انتخاب درست است
  • با عملگرهای منطقی و رشته‌های قالبی عبارت‌های پیچیده‌تر بسازید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب

عملگرها نمادهایی هستند که روی مقادیر کار انجام می‌دهند: دو عدد را جمع می‌کنند، دو مقدار را مقایسه می‌کنند یا چند شرط را با هم ترکیب می‌کنند. در این درس عملگرهای پرکاربرد جاوااسکریپت را می‌بینیم و در پایان با رشته‌های قالبی (Template Literals) راه تمیزِ ساختن متن‌های ترکیبی را یاد می‌گیریم.

عملگرهای محاسباتی

math.js
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 همان ۲٫۳۳... چاپ می‌شود.

جمع رشته‌ها

وقتی عملگر + به رشته‌ها برسد معنایش عوض می‌شود: رشته‌ها را به هم می‌چسباند.

concat.js
const first = "Java";
const second = "Script";
console.log(first + second);
console.log("Age: " + 25);
خروجی کد

JavaScript Age: 25

در خط آخر، عدد ۲۵ خودبه‌خود به رشته تبدیل و به متن چسبیده شد؛ به این کار «تبدیل ضمنی» (Implicit Conversion) می‌گویند. همین رفتار گاهی به دردسر باز می‌کند، به‌خصوص در مقایسه‌ها.

مقایسه با ===

equality.js
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 می‌دهد. این تبدیل‌های پنهان منبع خطاهای سخت‌یابی‌اند.

پارتنر برابر سخت‌گیرانه، نامساوی سخت‌گیرانه !== است. همچنین عملگرهای < و > و <= و >= برای مقایسهٔ کمتر و بیشتر به کار می‌روند و نتیجه‌شان همیشه بولی است.

عملگرهای منطقی

برای ترکیب شرط‌ها سه عملگر داریم: && (و)، || (یا) و ! (نقیض).

logical.js
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) با بک‌تیک ` نوشته می‌شود و اجازه می‌دهد مقدار هر متغیر را با ${} مستقیم داخل متن بگذارید.

template.js
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» باشد.

js
// Write your code here
نمایش راه‌حل
js
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

::: :::

خلاصه

  • عملگرهای حساب +، -، *، / هستند و % باقیمانده و ** توان می‌دهد.
  • + روی رشته‌ها یعنی چسباندن؛ عددها هم در این حالت به رشته تبدیل می‌شوند.
  • برای مقایسه همیشه از === و !== استفاده کنید؛ == با تبدیل ضمنی نوع، خطاخیز است.
  • &&، || و ! شرط‌ها را ترکیب می‌کنند.
  • رشتهٔ قالبی با بک‌تیک و ${} جای‌گذاری متغیر در متن را ساده و خوانا می‌کند.

با این ابزارها آماده‌اید در درس بعدی به برنامه‌تان قدرت تصمیم‌گیری بدهیم: شرط‌ها.

منابع و ارجاع‌ها

درس‌های مرتبط