برنامه نویسی

عملگرهای اتصال کوتاه و منطقی در جاوا اسکریپت: &&، ||، ??

اتصال کوتاه مفهومی در عملیات منطقی در بسیاری از زبان های برنامه نویسی از جمله جاوا اسکریپت است که ارزیابی به محض تعیین نتیجه متوقف می شود. مانند عملگر AND و OR عملگر. این ویژگی فقط به مقدار اول نگاه می کند تا تصمیم بگیرد که چه چیزی را بدون حتی نگاه کردن به مقدار دوم بازگرداند.
به ویژه برای بهینه سازی کد و جلوگیری از محاسبات غیر ضروری مفید است.

را && اپراتور: اگر مقدار اول باشد درست است، واقعی، بلافاصله “مقدار دوم” را برمی گرداند و اگر مقدار اول باشد تقلبی بلافاصله “مقدار نادرست” را برمی گرداند.

// falsy values: 0, '', undefined, null
console.log(true && 'Something'); // Something
console.log(false && 'Something'); // false
console.log(0 && 'Something'); // 0
11
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

را || اپراتور: اگر مقدار اول باشد درست است، واقعی، بلافاصله “true” را برمی گرداند و اگر مقدار اول باشد تقلبی بلافاصله “مقدار دوم” را برمی گرداند.

// falsy values: 0, '', undefined, null
console.log(true || 'Something'); // true
console.log(false || 'Something'); // Something
console.log(0 || 'Something'); // Something
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اما مقدار برگشتی ممکن است مشکل داشته باشد زیرا اگر مقدار اول 0 باشد اما در واقع نادرست نباشد، فقط نادرست است! سپس باید مقدار واقعی 0 را بدست آوریم نه مقدار دوم را.
مثالی دیگر:

const count1 = undefined;
const count2 = 0;
console.log(count1 || 'No data'); // No data
console.log(count2 || 'No data'); // No data
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا، گزارش کنسول دوم باید 0 را به عنوان تعداد کل نشان دهد، نه تعریف نشده. برای رفع این مشکل، باید به شرط انعطاف پذیری با مقادیر نادرست غیر از null و undefined بدهیم. اینجاست که ما از آن استفاده می کنیم عملگر ادغام باطل. این عملگر مقدار نادرست را اگر چیزی غیر از تعریف نشده یا تهی باشد، برمی گرداند. بنابراین، برای مقادیر 0 و رشته های خالی، مقدار واقعی آنها را برمی گرداند.

const count1 = undefined;
const count2 = 0;
const count3 = 5;
console.log(count1 ?? 'No data'); // No data
console.log(count2 ?? 'No data'); // 0
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

const data = {
 value1: undefined, // or it could be { nested: undefined }
 value2: { nested: 3 },
 value3: { nested: 5 }
};
function getMultiplicationResult(obj1, obj2) {
 const val1 = obj1?.nested ?? 0;
 const val2 = obj2?.nested ?? 0;
 return val1 * val2;
}
const result = getMultiplicationResult(data.value1, data.value2); // 0 * 3 = 0
const result = getMultiplicationResult(data.value2, data.value3); // 3 * 5 = 15
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا، ما استفاده کردیم ? (اختیاری زنجیر) برای دسترسی ایمن به تو در تو خاصیت اشیاء obj1 و obj2.
و استفاده کرد ?? (Nullish Coalescing) برای ارائه مقدار پیش فرض 0 اگر تو در تو است خالی یا تعریف نشده.
بنابراین، اگر data.value1 تعریف نشده است یا اگر data.value1.neted تعریف نشده است، انتخاب 1 تنظیم خواهد شد 0.

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا