مقدمه
در درس قبلی با مفهوم سازندهها و ایجاد اشیاء مشابه آشنا شدیم. حالا میخواهیم با ابزاری مدرن و
بسیار کاربردی آشنا شویم که دسترسی به پراپرتیهای تو در تو را در اشیاء به طور ساده و ایمن ممکن
میکند: تکنیک
Optional Chaining. این تکنیک از ES2020 به جاوااسکریپت اضافه شده و نوشتن کدهای حرفهایتر
و بدون خطا را بسیار آسانتر میکند.
Optional Chaining در عمل
گاهی در پروژههای واقعی، مطمئن نیستید که همه بخشهای یک شیء تو در تو مقداردهی شدهاند یا نه. اگر
مستقیماً به یک پراپرتی تو در تو دسترسی پیدا کنید و یکی از بخشهای میانی undefined یا
null باشد، برنامه با خطا متوقف میشود.
فرض کنید یک شیء user دارید که بخش address در آن تعریف نشده. اگر مستقیم سراغ
user.address.city بروید و address مقدار نداشته باشد، خطای runtime خواهید داشت:
JAVASCRIPT
let user = {};
console.log(user.address.city);
دلیل این خطا این است که جاوااسکریپت نمیتواند به پراپرتی city دسترسی پیدا کند چون
address وجود ندارد. در سناریوهای واقعی (مثلاً کار با دادههای API یا فرمهای کاربر)، این
اتفاق بسیار رایج است.
استفاده از Optional Chaining
با استفاده از عملگر ?. میتوانید به شکل امن و مختصر به پراپرتیهای تو در تو دسترسی پیدا
کنید. اگر هر بخش از مسیر وجود نداشت، جاوااسکریپت به جای خطا دادن، مقدار undefined را
برمیگرداند:
JAVASCRIPT
let user = {};
console.log(user.address?.city);
میتوانید از ?. برای دسترسی امن به متدها و عناصر آرایه هم استفاده کنید:
JAVASCRIPT
let user = {};
console.log(user.getProfile?.());
let data = [10, 20, 30];
console.log(data?.[1]);
مقایسه Optional Chaining با روش سنتی
پیش از ES2020 برای دسترسی امن به پراپرتیهای تو در تو باید هر مرحله را جداگانه چک میکردید که کد
را طولانی و ناخوانا میکرد:
JAVASCRIPT
if (user.address && user.address.city) {
console.log(user.address.city);
}
اما با Optional Chaining، همین منطق به یک عبارت کوتاه و خوانا تبدیل میشود و دیگر لازم
نیست همهجا شرط اضافی بنویسید. این تکنیک فقط زمانی undefined برمیگرداند که یکی از
بخشهای مسیر مقدار null یا undefined باشد.
در محموع میتوان گفت
عملگر Optional Chaining (?.) یک ابزار قدرتمند و مدرن برای نوشتن کدهای مقاوم و خوانا در
پروژههای واقعی جاوااسکریپت است. این تکنیک دسترسی به پراپرتیها و متدهای تو در تو را ساده و
بیخطر میکند و شما را از بررسی دستی هر مرحله نجات میدهد.
در درس بعد با نوع داده Symbol و کاربردهای حرفهای آن در اشیاء آشنا خواهیم شد.