في سياق منطقي (if, &&, ||, !)، يتم التعامل مع كل قيمة على أنها إما حقيقية أو زائفة. هناك بالضبط 8 قيم زائفة — كل شيء آخر حقيقي.
القيم الزائفة: , , , (BigInt صفر), (string فارغ), , , .
في سياق منطقي (if, &&, ||, !)، يتم التعامل مع كل قيمة على أنها إما حقيقية أو زائفة. هناك بالضبط 8 قيم زائفة — كل شيء آخر حقيقي.
القيم الزائفة: , , , (BigInt صفر), (string فارغ), , , .
false0-00n""nullundefinedNaNif ("") {} // skipped — empty string is falsy
if (0) {} // skipped
if ("0") {} // RUNS — non-empty string is truthy!
if ([]) {} // RUNS — empty array is truthy!
if ({}) {} // RUNS — empty object is truthy!
المفاجآت: "0", [], و {} كلها حقيقية، حتى وإن بدت "فارغة".
const name = input || "guest"; // ❌ if input is "" or 0, falls back to "guest"
const count = input ?? 0; // ✅ ?? only falls back on null/undefined
|| يرجع للقيمة البديلة لأي قيمة زائفة، لذا يتم استبدال 0 أو "" الصحيح. عامل nullish coalescing ?? يرجع للقيمة البديلة فقط لـ null/undefined، وهذا عادةً ما تريده فعلاً.
معرفة مجموعة القيم الزائفة الدقيقة تمنع الأخطاء الدقيقة — خاصة حماية الأرقام (if (count > 0) وليس if (count)) واختيار ?? مقابل || للقيم الافتراضية.