عملگر 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 نشان داده میشود: