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 به بعد در تمام مرورگرهای مدرن پشتیبانی میشود.