خیلی موقع ها شده که یک آبجکت داریم که مقادیر پراپرتی هاش هم آبجکت هستن و همون ها هم مقادیری از نوع آبجکت دارن و الی آخر مثل مثال زیر:
let userDetails = { id:1, name:"John", address:{ city:"NY", country:"U.S", street:{ name:"Street Test", ally:"Ally Test", allyNumber:"10", } }}
به طور مثال ما می خوایم به نام خیابان کاربر دسترسی داشته باشیم پس می نویسیم:
userDetails.street.name
اما فرض می کنیم سایت ما خدمات آموزشی ارایه می ده و کاربر ملزم به وارد کردن آدرس دقیق نیست پس پراپرتی street می تونه وجود نداشته باشه و وقتی می خوایم مقدارش رو بخونیم به خطا بر می خوریم:
Uncaught TypeError: Cannot read properties of undefined (reading 'name')
چون وقتی پراپرتی در آبجکت وجود نداشته باشه هنگام خوندنش به ما undefined بر گردونده میشه و اینجا street مقدارش undefined میشه و مسلما undefined پراپرتی نداره که بشه خوندش و به خطا بر می خوریم.
دقیقا همچین زمانی Optional Chaining به نجات ما میاد. گفتیم که در اینجا اگر street نباشه مشکلی نیست ولی ما دوست داریم وقتی پراپرتی از اون می خونیم به جای یه ارور رو مخ ,undefined بگیریم.یه نگاه به کد زیر بندازید:
userDetails.street?.name
این "?" که ما توی این کد اضافه کردیم این کار رو انجام میده:
در واقع این یک مثال ساده از این قابلیت بود چون کاربرد های پیشرفته تری هم داره که به امید خدا در مقاله های بعدی راجه بهش صحبت می کنم.
اگر هم دوست داشتید یه سر به این لینک بزنید.
امیدوارم از این مقاله لذت برده باشید و براتون مفید واقع شده باشه.
روز خوش!