NaN
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
Сводка
ÐлобалÑное ÑвойÑÑво NaN ÑвлÑеÑÑÑ Ð·Ð½Ð°Ñением, пÑедÑÑавлÑÑÑим не-ÑиÑло (Not-A-Number).
ÐÑÑибÑÑÑ ÑвойÑÑва NaN | |
|---|---|
| ÐапиÑÑваемое | Ð½ÐµÑ |
| ÐеÑеÑиÑлÑемое | Ð½ÐµÑ |
| ÐаÑÑÑаиваемое | Ð½ÐµÑ |
ÐнÑеÑакÑивнÑй пÑимеÑ
function sanitize(x) {
if (isNaN(x)) {
return NaN;
}
return x;
}
console.log(sanitize("1"));
// Expected output: "1"
console.log(sanitize("NotANumber"));
// Expected output: NaN
ÐпиÑание
NaN ÑвлÑеÑÑÑ ÑвойÑÑвом глобалÑного обÑекÑа.
ÐаÑалÑнÑм знаÑением NaN ÑвлÑеÑÑÑ Not-A-Number (не-ÑиÑло) â Ñо же Ñамое знаÑение, ÑÑо и Ñ Number.NaN. Ð ÑовÑеменнÑÑ
бÑаÑзеÑаÑ
NaN ÑвлÑеÑÑÑ Ð½ÐµÐ½Ð°ÑÑÑаиваемÑм и незапиÑÑваемÑм ÑвойÑÑвом. Ðаже когда ÑÑо не Ñак, избегайÑе его пеÑеопÑеделениÑ.
РпÑогÑаммаÑ
NaN иÑполÑзÑеÑÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñно Ñедко. ÐÑо возвÑаÑаемое знаÑение в ÑиÑÑаÑиÑÑ
, когда маÑемаÑиÑеÑкие (Math) ÑÑнкÑии не ÑÑабаÑÑваÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñм обÑазом (напÑимеÑ, пÑи вÑзове Math.sqrt(-1)) или когда ÑÑнкÑиÑ, пÑÑаÑÑаÑÑÑ ÑÑиÑаÑÑ ÑиÑло из ÑÑÑоки, ÑеÑÐ¿Ð¸Ñ Ð½ÐµÑдаÑÑ Ð¿Ð¾ пÑиÑине Ñого, ÑÑо в ÑÑÑоке не ÑиÑло (parseInt('blabla')).
ÐÑовеÑка на ÑавенÑÑво NaN
NaN ÑвлÑеÑÑÑ Ð½ÐµÑавнÑм (поÑÑедÑÑвом ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ ÑеÑез ==, !=, ===, and !==) лÑÐ±Ð¾Ð¼Ñ Ð´ÑÑÐ³Ð¾Ð¼Ñ Ð·Ð½Ð°ÑениÑ, вклÑÑÐ°Ñ Ð´ÑÑгое знаÑение NaN. ÐÑполÑзÑйÑе Number.isNaN() или isNaN(), ÑÑÐ¾Ð±Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ понÑÑнÑм обÑазом опÑеделиÑÑ ÑвлÑеÑÑÑ Ð»Ð¸ знаÑение знаÑением NaN. Ðли вÑполниÑе Ñамо-ÑÑавнение: NaN, и ÑолÑко NaN, в ÑезÑлÑÑаÑе Ñакого ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð½ÐµÑавнÑм ÑÐ°Ð¼Ð¾Ð¼Ñ Ñебе.
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
function valueIsNaN(v) {
return v !== v;
}
valueIsNaN(1); // false
valueIsNaN(NaN); // true
valueIsNaN(Number.NaN); // true
Тем не менее, обÑаÑиÑе внимание на ÑазниÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑÑнкÑией isNaN() и меÑодом Number.isNaN(): пеÑÐ²Ð°Ñ Ð²ÐµÑнÑÑ true, еÑли знаÑение в наÑÑоÑÑий Ð¼Ð¾Ð¼ÐµÐ½Ñ ÑвлÑеÑÑÑ NaN, или еÑли оно ÑÑÐ°Ð½ÐµÑ NaN поÑле Ñого, как пÑеобÑазÑеÑÑÑ Ð² ÑиÑло, в Ñо вÑÐµÐ¼Ñ ÐºÐ°Ðº поÑледний веÑнÑÑ true, ÑолÑко еÑли ÑекÑÑим знаÑением ÑвлÑеÑÑÑ NaN:
isNaN("hello world"); // true
Number.isNaN("hello world"); // false
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-value-properties-of-the-global-object-nan> |