حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش جاوااسکریپت تکمیلی؛ توابع و پردازش داده

آموزش optional chaining در جاوااسکریپت؛ خواندن مسیر ناقص

داده ناقص و اعتبارسنجی امن در جاوااسکریپت · 0٪

✍️ داده‌ای که از فایل یا سرویس می‌گیریم همیشه همه ویژگی‌ها را ندارد. اگر مستقیم user.address.city بخوانیم و address وجود نداشته باشه، برنامه خطا می‌ده. optional chaining با ?. اجازه می‌ده مسیر را بخوانیم و وقتی بخش قبلی null یا undefined است، به جای ادامه مسیر، undefined بگیریم.

در مثال، یکی از کاربرها نشانی دارد و دیگری ندارد. با user?.address?.city حتی نبودن خود user هم کنترل می‌شه. هر جایی از مسیر که ممکنه غایب باشه، باید علامت مناسب داشته باشه؛ اضافه کردن آن فقط در انتهای مسیر، نبودن بخش قبلی را درمان نمی‌کنه.

این ابزار جای اعتبارسنجی نوع همه داده‌ها نیست. مثلاً رشته بودن شهر یا درست بودن محتوای آن هنوز باید با قواعد برنامه بررسی بشه. خطای رایج اینه که optional chaining را ساختن مقدار پیش‌فرض بدونیم؛ نتیجه مسیر ناقص همچنان undefined است. برای انتخاب مقدار جایگزین، ابزار جداگانه‌ای داریم که در گام بعد یاد می‌گیریم. اینجا هدف فقط خواندن امن مسیر و جلوگیری از خطای دسترسی است.

const readCity = user => user?.address?.city;
console.log(readCity({address:{city:'تبریز'}})); // تبریز
console.log(readCity({name:'آوا'})); // undefined
console.log(readCity(null)); // undefined

فعالیت شما

مثال خواندن شهر را دنبال کن؛ نبودن address یا user باید undefined بدهد و خطای دسترسی رخ ندهد.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید: