سایت خبرکاو

جستجوگر هوشمند اخبار و مطالب فناوری

زنجیره سازی اختیاری در جاوا اسکریپت – با مثال توضیح داده شده است

توسعه جاوا اسکریپت اغلب شامل پیمایش در میان اشیاء تو در تو می شود، که می تواند دست و پا گیر و مستعد خطا باشد، به خصوص زمانی که با مقادیر null یا undefined سروکار داریم. Chaining اختیاری را وارد کنید - یک تغییر دهنده بازی در نحو مدرن جاوا اسکریپت. در این مقاله، ما زنجیره‌سازی اختیاری را از طریق مثال‌های عملی تحلیل می‌کنیم و نشان می‌دهیم که چگونه کد را ساده می‌کند و توسعه را کارآمدتر ...

توسعه جاوا اسکریپت اغلب شامل پیمایش در میان اشیاء تو در تو می شود، که می تواند دست و پا گیر و مستعد خطا باشد، به خصوص زمانی که با مقادیر null یا undefined سروکار داریم. Chaining اختیاری را وارد کنید - یک تغییر دهنده بازی در نحو مدرن جاوا اسکریپت.

در این مقاله، ما زنجیره‌سازی اختیاری را از طریق مثال‌های عملی تحلیل می‌کنیم و نشان می‌دهیم که چگونه کد را ساده می‌کند و توسعه را کارآمدتر می‌کند.

می توانید تمام کد منبع را از اینجا دریافت کنید.

فهرست مطالب

زنجیربندی اختیاری چیست ؟

نحوه دسترسی به ویژگی های تودرتو

نحوه فراخوانی روش‌های تودرتو

دسترسی پویا به اموال

نتیجه

زنجیربندی اختیاری ( ?. ) چیست؟

زنجیره‌سازی اختیاری، که در ECMAScript 2020 معرفی شد، ویژگی‌ای است که فرآیند دسترسی به ویژگی‌ها و روش‌های اشیاء یا آرایه‌های تودرتو را در زمانی که آپشن های میانی ممکن است null یا undefined باشند، ساده می‌کند.

عملگر اختیاری زنجیره ای ( ?. ) به شما امکان می دهد بدون نیاز به تحلیل های null یا undefined صریح به ویژگی ها یا روش ها دسترسی داشته باشید. اگر هر یک از ویژگی های میانی در زنجیره null یا undefined باشد، عبارت اتصال کوتاه می کند و نتیجه روی undefined تنظیم می شود.

در برنامه نویسی، "اتصال کوتاه" به رفتاری اطلاق می شود که ارزیابی یک عبارت به محض مواجه شدن با یک مقدار null یا undefined در طول زنجیره ویژگی ها یا روش های مورد دسترسی، متوقف می شود. به جای ادامه ارزیابی عبارت، نتیجه فوراً روی undefined تنظیم می شود و هر ویژگی یا روش بعدی دسترسی نادیده گرفته می شود.

حال، بیایید به مثال‌های عملی بپردازیم تا ببینیم زنجیره‌سازی اختیاری چگونه در سناریوهای دنیای واقعی کار می‌کند.

نحوه دسترسی به ویژگی های تودرتو

در این مثال، یک شی جاوا اسکریپت داریم که نشان دهنده یک کاربر با اطلاعات آدرس تو در تو است.

 const user = { name: "John", address: { city: "New York", zipcode: "10001" } };

رویکرد سنتی

روش سنتی برای دسترسی به دارایی city در آدرس کاربر شامل تحلیل های متعدد برای اطمینان از وجود ویژگی ها و null وجود یا undefined است.

 let city; if (user && user.address && user.address.city) { city = user.address.city; } else { city = "Unknown"; } console.log("Traditional Approach:", city); // Output: New York

این کد تحلیل می کند که آیا شی کاربر وجود دارد، آیا دارای ویژگی address است یا خیر، و آیا ویژگی address دارای ویژگی city است یا خیر. اگر هر یک از این شرایط ناموفق باشد، متغیر city روی "ناشناخته" تنظیم می شود.

رویکرد زنجیره‌ای اختیاری

با زنجیره‌سازی اختیاری، دسترسی به ویژگی شهر تودرتو بسیار ساده‌تر می‌شود:

 const city = user?.address?.city || "Unknown"; console.log("Optional Chaining Approach:", city); // Output: New York

?. اپراتور برای دسترسی به ویژگی city آدرس کاربر استفاده می شود. اگر هر یک از ویژگی های میانی ( user یا address ) null یا undefined باشد، عبارت اتصال کوتاه می کند و نتیجه بلافاصله روی "ناشناخته" تنظیم می شود.

نحوه فراخوانی روش‌های تودرتو

در این مثال، یک شی کاربر با متد getAddress() داریم که آدرس کاربر را برمی گرداند.

 const user = { name: "Alice", getAddress() { return { city: "San Francisco", zipcode: "94105" }; } };

رویکرد سنتی

روش سنتی برای فراخوانی متد getAddress() و دسترسی به ویژگی city شامل تحلیل های اضافی برای اطمینان از وجود متد و برگرداندن یک مقدار غیر تهی است.

 let city; if (user && user.getAddress) { const address = user.getAddress(); if (address) { city = address.city; } } console.log("Traditional Approach:", city); // Output: San Francisco

این کد ابتدا تحلیل می کند که آیا شی کاربر وجود دارد یا خیر و آیا دارای متد getAddress است یا خیر. سپس متد را فراخوانی می کند و تحلیل می کند که آیا شی address برگشتی قبل از دسترسی به ویژگی city آن وجود دارد یا خیر.

رویکرد زنجیره‌ای اختیاری

با زنجیره‌سازی اختیاری، فراخوانی متد تودرتو و دسترسی به ملک city را می‌توان به صورت مختصرتر انجام داد:

 const city = user?.getAddress?.().city || "Unknown"; console.log("Optional Chaining Approach:", city); // Output: San Francisco

در اینجا، عملگر اختیاری زنجیره ای برای فراخوانی متد getAddress() و دسترسی به ویژگی city آن استفاده می شود. اگر متد getAddress یا هر ویژگی میانی در زنجیره null یا undefined باشد، عبارت اتصال کوتاه می‌کند و نتیجه بلافاصله روی «ناشناخته» تنظیم می‌شود.

دسترسی پویا به اموال

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

 const users = [ { id: 1, profile: { name: "Alice" } }, { id: 2 }, { id: 3, profile: { name: "Bob" } } ];

رویکرد سنتی

روش سنتی برای دسترسی به نام پروفایل به صورت پویا شامل تحلیل های متعدد برای هر شیء کاربر در آرایه است.

 const names = users.map(user => { if (user && user.profile && user.profile.name) { return user.profile.name; } else { return "Unknown"; } }); console.log("Traditional Approach:", names); // Output: ["Alice", "Unknown", "Bob"]

این کد از map() برای تکرار روی هر شیء کاربر در آرایه استفاده می کند و تحلیل می کند که آیا نمایه ای با ویژگی name دارد یا خیر. اگر ویژگی name وجود داشته باشد، برگردانده می شود - در غیر این صورت، "Unknown" برگردانده می شود.

رویکرد زنجیره‌ای اختیاری

با زنجیره‌سازی اختیاری، دسترسی به ویژگی پویا ساده‌تر می‌شود:

 const names = users.map(user => user?.profile?.name || "Unknown"); console.log("Optional Chaining Approach:", names); // Output: ["Alice", "Unknown", "Bob"]

در اینجا، عملگر اختیاری زنجیره ای برای دسترسی به ویژگی name پروفایل هر کاربر استفاده می شود. اگر هر یک از آپشن های میانی در زنجیره null یا undefined باشد، عبارت اتصال کوتاه می‌کند و "ناشناخته" به عنوان مقدار پیش‌فرض برگردانده می‌شود.

نتیجه

با اعمال زنجیره اختیاری، می توانید کد خود را ساده کنید و آن را خواناتر و قابل نگهداری تر کنید.

همانطور که جاوا اسکریپت به تکامل خود ادامه می دهد، ویژگی هایی مانند زنجیره اختیاری نقش مهمی در افزایش بهره وری توسعه دهندگان و کیفیت کد دارند.

خبرکاو