محمد پیمان راد
محمد پیمان راد
خواندن ۱ دقیقه·۲ سال پیش

قابلیت Optional Chaining در جاوااسکریپت,این ".?" چه فایده ای داره؟


خیلی موقع ها شده که یک آبجکت داریم که مقادیر پراپرتی هاش هم آبجکت هستن و همون ها هم مقادیری از نوع آبجکت دارن و الی آخر مثل مثال زیر:

let userDetails = { id:1, name:&quotJohn&quot, address:{ city:&quotNY&quot, country:&quotU.S&quot, street:{ name:&quotStreet Test&quot, ally:&quotAlly Test&quot, allyNumber:&quot10&quot, } }}

به طور مثال ما می خوایم به نام خیابان کاربر دسترسی داشته باشیم پس می نویسیم:

userDetails.street.name

اما فرض می کنیم سایت ما خدمات آموزشی ارایه می ده و کاربر ملزم به وارد کردن آدرس دقیق نیست پس پراپرتی street می تونه وجود نداشته باشه و وقتی می خوایم مقدارش رو بخونیم به خطا بر می خوریم:

Uncaught TypeError: Cannot read properties of undefined (reading 'name')

چون وقتی پراپرتی در آبجکت وجود نداشته باشه هنگام خوندنش به ما undefined بر گردونده میشه و اینجا street مقدارش undefined میشه و مسلما undefined پراپرتی نداره که بشه خوندش و به خطا بر می خوریم.

دقیقا همچین زمانی Optional Chaining به نجات ما میاد. گفتیم که در اینجا اگر street نباشه مشکلی نیست ولی ما دوست داریم وقتی پراپرتی از اون می خونیم به جای یه ارور رو مخ ,undefined بگیریم.یه نگاه به کد زیر بندازید:

userDetails.street?.name

این "?" که ما توی این کد اضافه کردیم این کار رو انجام میده:

  • اگر null,userDetails.street یا undefined نبود پراپرتی name رو ازش می خونه.
  • اگر چنین نبود به ما undefined بر می گردونه.



در واقع این یک مثال ساده از این قابلیت بود چون کاربرد های پیشرفته تری هم داره که به امید خدا در مقاله های بعدی راجه بهش صحبت می کنم.

اگر هم دوست داشتید یه سر به این لینک بزنید.

امیدوارم از این مقاله لذت برده باشید و براتون مفید واقع شده باشه.

روز خوش!


جاوااسکریپتاکمااسکریپتبرنامه نویسیتوسعه وبسایت
در حال ماجراجویی در دنیای پایان ناپذیر وب
شاید از این پست‌ها خوشتان بیاید