۲۰ ژوئیه ۲۰۲۳

عملگر Nullish coalescing '??'

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

عملگر nullish coalescing با دو علامت سوال ?? نوشته می‌شود.

به دلیل اینکه این عملگر با null و undefined به طور یکسان رفتار می‌کند، ما در این فصل از یک اصطلاح خاص استفاده می‌کنیم. می‌گوییم که یک عبارت “تعریف شده” است هرگاه که نه null باشد و نه undefined.

نتیجه‌ی a ?? b:

  • اگر a تعریف شده باشد، پس برابر با a است،
  • اگر a تعریف شده نباشد، پس برابر با b است.

به عبارتی دیگر، ?? اولین آرگومان را اگر null/undefined نباشد برمی‌گرداند. در غیر این صورت، آرگومان دوم برگردانده می‌شود.

عملگر nullish coalescing چیز کاملا جدیدی نیست. این عملگر تنها یک سینتکس برای گرفتن اولین مقدار “تعریف شده” از بین دو مقدار است.

ما می‌توانیم result = a ?? b را با استفاده از اپراتورهایی که از قبل می‌شناسیم دوباره به این شکل بنویسیم:

result = (a !== null && a !== undefined) ? a : b;

حال باید کاملا روشن باشد که ?? چه کاری انجام می‌دهد. بیایید ببینیم این عملگر کجا کمک‌مان می‌کند.

یک مورد متداول برای استفاده از ?? تعیین کردن مقداری پیش‌فرض برای متغیر است.

برای مثال، اینجا اگر مقدار user برابر با null/undefined نباشد آن را نشان می‌دهیم، در غیر این صورت Anonymous نشان داده می‌شود: