بازگشت به مطالب

2026-04-28

NaN در JavaScript هنوز number است

یک نکته مهم: NaN یک مقدار sentinel در نوع number است، نه یک type جدا.

NaN در نگاه اول کمی گمراه‌کننده است.
اسمش «Not a Number» است، اما در JavaScript همچنان بخشی از type number محسوب می‌شود.

const a = 2 / "foo"; // NaN
console.log(typeof a); // "number"

چرا این نکته مهم است:

  • NaN را باید یک وضعیت نامعتبرِ عددی بدانیم، نه یک type متفاوت.
  • صرفا چک کردن type (typeof x === "number") کافی نیست وقتی احتمال مقدار نامعتبر وجود دارد.
  • برای اعتبارسنجی امن، از Number.isNaN(value) استفاده کنید.
const value = Number(input);
if (Number.isNaN(value)) {
  // handle invalid number input
}

همین تفاوت‌های ظریف باعث می‌شود باگ‌های پنهان در formها، filterها و calculationها کمتر شوند.