عملگرها و عبارت‌ها

عملگرهای حسابی، انتساب، مقایسه‌ای، منطقی، بیتی، شرطی، Nullish Coalescing و Optional Chaining

عملگر چیست؟

عملگر (Operator) نمادی است که روی یک یا چند عملوند (Operand) عملیاتی انجام می‌دهد و نتیجه‌ای تولید می‌کند. جاوا اسکریپت عملگرهای متنوعی دارد که به دسته‌های زیر تقسیم می‌شوند.

عملگرهای حسابی (Arithmetic)

برای انجام عملیات ریاضی استفاده می‌شوند:

عملگرناممثالنتیجه
+جمع5 + 38
-تفریق5 - 32
*ضرب5 * 315
/تقسیم5 / 22.5
%باقیمانده5 % 21
**توان2 ** 38
++افزایشx++x را یک زیاد می‌کند
--کاهشx--x را یک کم می‌کند

تفاوت ++x و x++

let x = 5;
console.log(x++); // 5 (اول مقدار، بعد افزایش)
console.log(x);   // 6

let y = 5;
console.log(++y); // 6 (اول افزایش، بعد مقدار)

عملگرهای انتساب (Assignment)

برای اختصاص مقدار به متغیر:

عملگرمثالمعادل
=x = 5—
+=x += 3x = x + 3
-=x -= 3x = x - 3
*=x *= 3x = x * 3
/=x /= 3x = x / 3
%=x %= 3x = x % 3
**=x **= 3x = x ** 3

عملگرهای مقایسه‌ای (Comparison)

دو مقدار را مقایسه کرده و true یا false برمی‌گردانند:

عملگرناممثالنتیجه
==مساوی (با تبدیل نوع)5 == "5"true
===مساوی سخت‌گیرانه5 === "5"false
!=نامساوی5 != "5"false
!==نامساوی سخت‌گیرانه5 !== "5"true
>بزرگتر5 > 3true
<کوچکتر5 < 3false
>=بزرگتر مساوی5 >= 5true
<=کوچکتر مساوی5 <= 3false

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

با مقادیر بولی کار می‌کنند:

عملگرناممثالنتیجه
&&ANDtrue && falsefalse
||ORtrue || falsetrue
!NOT!truefalse

ارزیابی کوتاه‌مدار (Short-Circuit)

عملگرهای منطقی تا وقتی به نتیجه برسند ادامه می‌دهند و مقدار آخرین عملوند ارزیابی‌شده را برمی‌گردانند:

// AND: اگر اولی falsy باشد همان برگردانده می‌شود
console.log(0 && "سلام"); // 0
console.log("اول" && "دوم"); // "دوم"

// OR: اگر اولی truthy باشد همان برگردانده می‌شود
console.log("اول" || "دوم"); // "اول"
console.log(null || "پیش‌فرض"); // "پیش‌فرض"

عملگرهای بیتی (Bitwise)

روی بیت‌های باینری اعداد کار می‌کنند:

عملگرناممثال (باینری)
&AND5 & 3 = 1 (0101 & 0011 = 0001)
|OR5 | 3 = 7 (0101 | 0011 = 0111)
^XOR5 ^ 3 = 6 (0101 ^ 0011 = 0110)
~NOT~5 = -6
<<شیفت چپ5 << 1 = 10
>>شیفت راست5 >> 1 = 2</td></tr> <tr><td><code>>>>شیفت راست بدون علامت-5 >>> 1 = 2147483645

عملگر شرطی (Ternary)

تنها عملگر با سه عملوند — نسخه فشرده if/else:

const age = 20;
const status = age >= 18 ? "بزرگسال" : "کودک";
console.log(status); // "بزرگسال"

عملگر تهی (Nullish Coalescing — ??)

از ES2020 اضافه شد. فقط وقتی مقدار null یا undefined باشد مقدار پیش‌فرض برمی‌گرداند:

const name = null ?? "مهمان";       // "مهمان"
const count = 0 ?? 10;              // 0 (چون 0 تهی نیست!)
const text = "" ?? "پیش‌فرض";       // "" (رشته خالی تهی نیست!)

تفاوت با ||: عملگر || تمام مقادیر falsy را رد می‌کند اما ?? فقط null و undefined:

0 || 10;  // 10 (0 falsy است)
0 ?? 10;  // 0 (0 تهی نیست)
"" || "متن"; // "متن"
"" ?? "متن"; // ""

زنجیره اختیاری (Optional Chaining — ?.)

از ES2020 — دسترسی امن به ویژگی‌های تو در تو بدون خطا:

const user = { profile: { name: "علی" } };

// روش قدیمی:
const city = user && user.profile && user.profile.city;
// اگر هر کدام undefined باشد خطا می‌دهد

// با Optional Chaining:
const city2 = user?.profile?.city;     // undefined (بدون خطا)
const zip = user?.address?.zip;        // undefined

// با فراخوانی تابع:
user.sayHi?.(); // اگر وجود نداشته باشد خطا نمی‌دهد

عملگرهای یکانی (Unary)

عملگرهایی که فقط یک عملوند دارند:

+x    // تبدیل به عدد
-x    // منفی کردن
!x    // نقیض بولی
typeof x // نوع داده
++x / x++ // افزایش
--x / x-- // کاهش

تقدم عملگرها (Operator Precedence)

وقتی چند عملگر در یک عبارت باشند، جاوا اسکریپت بر اساس تقدم آن‌ها را اجرا می‌کند:

let result = 2 + 3 * 4;   // 14 (اول ضرب)
let result2 = (2 + 3) * 4; // 20 (پرانتز تقدم دارد)

تقدم از بالا به پایین:

  1. () — پرانتز
  2. ++ -- ! — یکانی
  3. ** — توان
  4. * / % — ضرب و تقسیم
  5. + - — جمع و تفریق
  6. < > <= >= — مقایسه
  7. == != === !== — تساوی
  8. && — AND
  9. || — OR
  10. ?? — Nullish
  11. = += -= — انتساب (کمترین تقدم)

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل جاوا اسکریپت است.

ابزارهای مرتبط