Baseline Widely available
ÐнноÑаÑиÑФÑнкÑÐ¸Ñ isNaN()
опÑеделÑÐµÑ ÑвлÑеÑÑÑ Ð»Ð¸ лиÑеÑал или пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½ÐµÑиÑловÑм знаÑением (NaN
) или неÑ. ÐÑи ÑабоÑе Ñ ÑÑнкÑией необÑ
одимо пÑоÑвлÑÑÑ Ð¾ÑÑоÑожноÑÑÑ Ñак как она Ð¸Ð¼ÐµÐµÑ Ñвои оÑобенноÑÑи. РкаÑеÑÑве алÑÑеÑнаÑÐ¸Ð²Ñ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð¼ÐµÑод Number.isNaN()
из ECMAScript 6, или дополниÑелÑно пÑовеÑÑÑÑ Ð»Ð¸ÑеÑал или пеÑеменнÑÑ Ð½Ð° неÑиÑловое знаÑение пÑи помоÑи typeof
.
ÐнаÑение
ÐиÑеÑал или пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÐºÐ¾ÑоÑÑе бÑдÑÑ Ð¿ÑовеÑÑÑÑÑÑ Ð½Ð° неÑиÑловое знаÑение.
isNaN
?
РоÑлиÑие Ð¾Ñ Ð´ÑÑгиÑ
возможнÑÑ
знаÑениÑÑ
в JavaScript, пÑи ÑабоÑе Ñ Ð·Ð½Ð°Ñением данного Ñипа невозможно полагаÑÑÑÑ Ð½Ð° == и === Ð´Ð»Ñ Ð¾Ð¿ÑеделениÑ, ÑвлÑеÑÑÑ Ð»Ð¸ пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð»Ð¸ лиÑеÑал неÑиÑловÑм знаÑением (NaN
) или неÑ, Ñак как пÑовеÑки NaN == NaN
и NaN === NaN
в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ Ð²ÐµÑнÑÑ false
. СледоваÑелÑно, Ð´Ð»Ñ Ð¿ÑовеÑки нÑжна ÑÑнкÑÐ¸Ñ isNaN
.
ÐÐ»Ñ Ð°Ð»ÑÑеÑнаÑивной пÑовеÑки пеÑеменной на NaN без иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑнкÑии isNaN() можно воÑполÑзоваÑÑÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑией x !== x
var x = NaN x != x // true x !== x // trueÐенеÑаÑÐ¸Ñ Ð·Ð½Ð°ÑениÑ
NaN
ÐнаÑение NaN
генеÑиÑÑÑÑÑÑ Ð°ÑиÑмеÑиÑеÑкими опеÑаÑиÑми, ÑезÑлÑÑаÑом коÑоÑÑÑ
ÑвлÑеÑÑÑ undefined или unrepresentable. Такие ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ обÑзаÑелÑно обознаÑаÑÑ Ð¿ÐµÑеполнение ÑÑека. NaN
Ñакже Ð¼Ð¾Ð¶ÐµÑ ÑвлÑÑÑÑÑ ÑезÑлÑÑаÑом попÑÑки пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑиÑла в ÑÑÑокÑ, или знаÑениÑ, не имеÑÑего ÑквиваленÑа в пÑоÑÑÑÑ
ÑиÑловÑÑ
пÑимиÑиваÑ
.
ÐапÑимеÑ, деление нÑÐ»Ñ Ð½Ð° нÑÐ»Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ NaN
â но деление дÑÑгиÑ
ÑиÑел на 0 не возвÑаÑÐ°ÐµÑ NaN.
var x = NaN x != x // true x !== x // trueÐÑобенноÑÑи поведениÑ
С ÑамÑÑ
ÑанниÑ
веÑÑий ÑÑнкÑии isNaN
ÐµÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ Ð½Ðµ ÑиÑловÑÑ
пеÑеменнÑÑ
или лиÑеÑалов бÑло доволÑно-Ñаки запÑÑаннÑм. Ðогда аÑгÑменÑом ÑÑнкÑии isNaN
ÑвлÑеÑÑÑ Ð¿ÐµÑеменнаÑ, Ñип коÑоÑой не Number, она пÑеобÑазÑеÑÑÑ Ðº ÑÐ¸Ð¿Ñ Number
. ÐолÑÑенное знаÑение заÑем пÑовеÑÑеÑÑÑ, ÑвлÑеÑÑÑ Ð»Ð¸ оно NaN
. Таким обÑазом Ð´Ð»Ñ Ð½Ðµ ÑиÑловÑÑ
знаÑений, коÑоÑÑе можно пÑеобÑазоваÑÑ Ð² ÑиÑловой Ñип без не-NaN знаÑÐµÐ½Ð¸Ñ (в ÑаÑÑноÑÑи, пÑÑÑÐ°Ñ ÑÑÑока или логиÑеÑкие пÑимиÑивÑ, коÑоÑÑе пÑеобÑазÑÑÑÑÑ Ð² 0 или 1), возвÑаÑаемое знаÑение "false" Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ð¹ неожиданноÑÑÑÑ; пÑÑÑÐ°Ñ ÑÑÑока пÑеобÑазÑеÑÑÑ Ð² "not a number." ÐÑÑаниÑа ÑвÑзана Ñ Ñем, ÑÑо "not a number" Ð¸Ð¼ÐµÐµÑ Ð¾Ð¿ÑеделÑнное знаÑение, опиÑанное в ÑÑандаÑÑе IEEE-794 ÑиÑел Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой. ФÑнкÑÐ¸Ñ ÑÑÐ¾Ð¸Ñ Ð²Ð¾ÑпÑинимаÑÑ Ð² каÑеÑÑве оÑвеÑа на вопÑоÑ, "ЯвлÑеÑÑÑ Ð»Ð¸ ÑÑо знаÑение коÑÑекÑнÑм ÑиÑлом по ÑÑандаÑÑÑ IEEE-794?"
Ð ÑледÑÑÑей веÑÑии ECMAScript (ES6) ÑÑнкÑÐ¸Ñ Number.isNaN()
Ñакже пÑиÑÑÑÑÑвÑеÑ. Number.isNaN(x)
бÑÐ´ÐµÑ Ð½Ð°Ð´ÑжнÑм меÑодом Ð´Ð»Ñ Ð¿ÑовеÑки, ÑодеÑÐ¶Ð¸Ñ Ð»Ð¸ x
знаÑение NaN
или неÑ. Ðаже Ñ Number.isNaN
, однако, ÑезÑлÑÑаÑом NaN
оÑÑаÑÑÑÑ ÑоÑное ÑиÑловое знаÑение, а не пÑоÑÑо "not a number".
isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN(true); // false
isNaN(null); // false
isNaN(37); // false
// strings
isNaN("37"); // false: "37" пÑеобÑазÑеÑÑÑ Ð² ÑиÑло 37 коÑоÑое не NaN
isNaN("37.37"); // false: "37.37" пÑеобÑазÑеÑÑÑ Ð² ÑиÑло 37.37 коÑоÑое не NaN
isNaN(""); // false: пÑÑÑÐ°Ñ ÑÑÑока пÑеобÑазÑеÑÑÑ Ð² 0 коÑоÑое не NaN
isNaN(" "); // false: ÑÑÑока Ñ Ð¿Ñобелом пÑеобÑазÑеÑÑÑ Ð² 0 коÑоÑое не NaN
isNaN("37,5"); // true
// ÐаÑÑ
isNaN(new Date()); // false
isNaN(new Date().toString()); // true
// ÐÑÐ¸Ð¼ÐµÑ Ð¿Ð¾ÑÐµÐ¼Ñ Ð¸ÑполÑзование isNaN не вÑегда ÑмеÑÑно
isNaN("blabla"); // true: "blabla" пÑеобÑазовано в ÑиÑло.
// ÐÑи паÑÑинге пÑеобÑазÑеÑÑÑ Ð² ÑиÑло пÑи неÑдаÑе возвÑаÑÐ°ÐµÑ NaN
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4