js Optional Chaining
در جاوااسکریپت، عملگر (?.) Optional Chaining برای دسترسی ایمن به ویژگیها و توابع تو در تو استفاده میشود، بدون اینکه در صورت نبودن مقدار، خطا بدهد.
این عملگر کمک میکند اگر مقداری null
یا undefined
بود، برنامه متوقف نشود و فقط مقدار undefined
برگرداند.
🔹 مشکل بدون Optional Chaining
اگر در یک شیء، خاصیتی وجود نداشته باشد، دسترسی مستقیم به زیرویژگیها باعث خطا میشود:
const user = {};
console.log(user.address.city); // ❌ خطا: Cannot read properties of undefined
🔹 حل مشکل با Optional Chaining
با استفاده از ?.
، در صورت نبود مقدار، جاوااسکریپت بهجای خطا، مقدار undefined
برمیگرداند:
const user = {};
console.log(user.address?.city); // ✅ undefined (بدون خطا)
🔹 در توابع
میتوان از Optional Chaining برای فراخوانی ایمن توابع نیز استفاده کرد:
const user = {
info: null
};
user.info?.(); // ✅ بدون خطا
اگر info
تابع نباشد یا مقدارش null
باشد، این دستور بهجای خطا، فقط undefined
برمیگرداند.
🔹 در آرایهها
const users = null;
console.log(users?.[0]); // ✅ undefined
در اینجا اگر users
مقدار null
داشته باشد، دسترسی به اندیس 0 باعث خطا نمیشود.
🔹 ترکیب با Nullish Coalescing (??
)
معمولاً ?.
را همراه با ??
استفاده میکنند تا در صورت undefined
بودن، مقدار پیشفرض بدهیم:
const user = {};
console.log(user.address?.city ?? "نامشخص");
📌 خروجی:
نامشخص
✅ نکته:
-
عملگر
?.
فقط زمانی جلوی خطا را میگیرد که مقدارnull
یاundefined
باشد. -
استفادهی بیش از حد از آن میتواند منطق برنامه را پنهان کند، پس در جای درست استفاده شود.
-
این ویژگی از ES2020 به بعد پشتیبانی میشود.