منابع آموزشی و پژوهشی، برای دانشگاه و مدرسه
پشتیبانیانتشار محتوا
CODEX/سطح ۱؛ عملگرها و شرطjavascriptNullish coalescing

مقدار پیش‌فرض با ?? در جاوااسکریپت

عملگر ?? در جاوااسکریپت فقط برای null و undefined مقدار پیش‌فرض می‌گذارد؛ حفظ صفر، false و رشتهٔ خالی را با تنظیمات تعداد نتیجه مقایسه کنید.

مفهوم به زبان ساده

همیشه نمی‌خواهیم همهٔ مقدارهای falsy را «نداشتن داده» بدانیم. در تنظیمات یک برنامه، صفر ممکن است یعنی هیچ اعلان تازه‌ای نمایش داده نشود و false ممکن است انتخاب آگاهانهٔ کاربر باشد. عملگر ?? سمت راست را فقط زمانی انتخاب می‌کند که سمت چپ null یا undefined باشد. در غیر این صورت، همان مقدار سمت چپ را نگه می‌دارد.

این قرارداد با || فرق دارد. استفاده از count || 10 می‌تواند صفر معتبر را با ده عوض کند. count ?? 10 این کار را نمی‌کند؛ ولی اگر صفر طبق محصول نامجاز است، نگه‌داشتن آن هم جای اعتبارسنجی را نمی‌گیرد. همچنین ?? برای NaN مقدار جایگزین انتخاب نمی‌کند، زیرا NaN نه null است و نه undefined. نبودن، خراب‌بودن و نامجازبودن سه وضعیت یکسان نیستند.

در نمونه، دو کاربر صفر و null را به‌عنوان تنظیم نمونه دارند. یکی انتخابی موجود دارد و دیگری نیازمند پیش‌فرض است. سمت راست فقط در صورت نیاز ارزیابی می‌شود. هنگام ترکیب مستقیم ?? با && یا ||، پرانتز لازم است تا نحو مجاز و منظور روشن باشد. برای تنظیمات مهم، معنی هر حالت را پیش از انتخاب عملگر بنویسید.

کجا به کار می‌آید؟

  • حفظ تنظیم معتبر صفر یا false هنگام تعیین پیش‌فرض
  • تفکیک دادهٔ موجود از فیلد اختیاریِ null یا undefined

از تعریف تا یک مثال واقعی

javascript
const chosenCount = 0;
const missingCount = null;
console.log(chosenCount ?? 10);
console.log(chosenCount || 10);
console.log(missingCount ?? 10);
console.log(false ?? true);
console.log('' ?? 'مهمان');
console.log(Number.isNaN(NaN ?? 10));
خروجی مورد انتظار
0
10
10
false

true
کد را تغییر دهید و نتیجه را ببینید.

این مثال چطور کار می‌کند؟

  1. صفر با ?? حفظ و با || کنار گذاشته می‌شود.

  2. null به مقدار پیش‌فرض ده می‌رسد.

  3. false و رشتهٔ خالی حفظ می‌شوند؛ NaN نیز خودکار اصلاح نمی‌شود.

اشتباه رایج

?? ابزار بررسی خالی‌بودن متن یا صحت عدد نیست. رشتهٔ فقط شامل فاصله و NaN را می‌گذارد؛ قرارداد آن فقط تشخیص null و undefined است.

این را به خاطر بسپارید

پیش‌فرض را بر اساس معنای نبودن انتخاب کنید؛ ?? صفر، false و متن خالی را دادهٔ موجود می‌داند.

بازگشت به نقشهٔ مفاهیم
یکجا انتخاب کن، راحت‌تر دریافت کن

انتخاب‌های من ۰ منبع

مجموعهٔ مطالعه‌ات را بساز.

کنار مقاله‌ها «انتخاب» را بزنید تا چند فایل را با هم دریافت کنید.

انتخاب مقاله‌های رایگان