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ها کمتر شوند.