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 به بعد پشتیبانی میشود.
HTML
Tailwind Css
Bootstrap 5
Java script
++C
Python
Three.js
Gsap
Sass
SQL
React