js Nullish Coalescing

در جاوااسکریپت، عملگر (??) Nullish Coalescing  برای تعیین مقدار پیش‌فرض زمانی استفاده می‌شود که مقدار سمت چپ null یا undefined باشد.

این عملگر شبیه عملگر || است، اما تفاوت مهمی دارد که فقط در صورت null یا undefined بودن عمل می‌کند، نه هر مقدار falsy.

🔹 مثال ساده

const name = null;
const userName = name ?? "کاربر مهمان";

console.log(userName);

📌 خروجی:

کاربر مهمان

در این مثال، چون مقدار name برابر null است، مقدار "کاربر مهمان" جایگزین آن می‌شود.

🔹 تفاوت با عملگر OR (||)

عملگر || هر مقداری را که falsy باشد (مثل 0، ""، false، null، undefined) بررسی می‌کند،
اما ?? فقط برای null و undefined عمل می‌کند.

const count1 = 0 || 10;
const count2 = 0 ?? 10;

console.log(count1);
console.log(count2);

📌 خروجی:

10
0

✅ در ||، عدد صفر falsy است و مقدار 10 جایگزین می‌شود.
اما در ??، چون صفر null یا undefined نیست، همان 0 حفظ می‌شود.

🔹 استفاده در متغیرهای چندگانه

const a = null;
const b = undefined;
const c = "Hello";

const result = a ?? b ?? c;

console.log(result);

📌 خروجی:

Hello

عملگر ?? از چپ به راست حرکت می‌کند و اولین مقدار غیر null و غیر undefined را برمی‌گرداند.

🔹 ترکیب با Optional Chaining (?.)

این دو معمولاً با هم استفاده می‌شوند تا کد ایمن و خوانا باشد:

const user = {};

console.log(user.profile?.name ?? "نامشخص");

📌 خروجی:

نامشخص

در اینجا اگر user.profile وجود نداشته باشد یا name تعریف نشده باشد، مقدار "نامشخص" نمایش داده می‌شود.

نکته:

  • عملگر ?? فقط null و undefined را چک می‌کند.

  • برای مقادیر falsy مثل 0، false یا "" از || استفاده نکنید اگر می‌خواهید این مقادیر معتبر باقی بمانند.

  • از نسخه ES2020 به بعد در تمام مرورگرهای مدرن پشتیبانی می‌شود.