Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

isNaN()

BaselineWidely available

TheisNaN() function determines whether a value isNaN, first converting the value to a number if necessary. Because coercion inside theisNaN() function can besurprising, you may prefer to useNumber.isNaN().

Try it

function milliseconds(x) {  if (isNaN(x)) {    return "Not a Number!";  }  return x * 1000;}console.log(milliseconds("100F"));// Expected output: "Not a Number!"console.log(milliseconds("0.0314E+2"));// Expected output: 3140

Syntax

js
isNaN(value)

Parameters

value

The value to be tested.

Return value

true if the given value isNaN after beingconverted to a number; otherwise,false.

Description

isNaN() is a function property of the global object.

For number values,isNaN() tests if the number is the valueNaN. When the argument to theisNaN() function is not of typeNumber, the value is first coerced to a number, and the resulting value is then compared againstNaN.

This behavior ofisNaN() for non-numeric arguments can be confusing! For example, an empty string is coerced to 0, while a boolean is coerced to 0 or 1; both values are intuitively "not numbers", but they don't evaluate toNaN, soisNaN() returnsfalse. Therefore,isNaN() answers neither the question "is the input the floating pointNaN value" nor the question "is the input not a number".

Number.isNaN() is a more reliable way to test whether a value is the number valueNaN or not. Alternatively, the expressionx !== x can be used, and neither of the solutions is subject to the false positives that make the globalisNaN() unreliable. To test if a value is a number, usetypeof x === "number".

TheisNaN() function answers the question "is the input functionally equivalent toNaN when used in a number context". IfisNaN(x) returnsfalse, you can usex in an arithmetic expression as if it's a valid number that's notNaN. IfisNaN(x) returnstrue,x will get coerced toNaN and make most arithmetic expressions returnNaN (becauseNaN propagates). You can use this, for example, to test whether an argument to a function is arithmetically processable (usable "like" a number), and handle values that are not number-like by throwing an error, providing a default value, etc. This way, you can have a function that makes use of the full versatility JavaScript provides by implicitly converting values depending on context.

Note:The+ operator performs both number addition and string concatenation. Therefore, even ifisNaN() returnsfalse for both operands, the+ operator may still return a string, because it's not used as an arithmetic operator. For example,isNaN("1") returnsfalse, but"1" + 1 returns"11". To be sure that you are working with numbers,coerce the value to a number and useNumber.isNaN() to test the result.

Examples

Note howisNaN() returnstrue for values that are not the valueNaN but are not numbers either:

js
isNaN(NaN); // trueisNaN(undefined); // trueisNaN({}); // trueisNaN(true); // falseisNaN(null); // falseisNaN(37); // false// StringsisNaN("37"); // false: "37" is converted to the number 37 which is not NaNisNaN("37.37"); // false: "37.37" is converted to the number 37.37 which is not NaNisNaN("37,5"); // trueisNaN("123ABC"); // true: Number("123ABC") is NaNisNaN(""); // false: the empty string is converted to 0 which is not NaNisNaN(" "); // false: a string with spaces is converted to 0 which is not NaN// DatesisNaN(new Date()); // false; Date objects can be converted to a number (timestamp)isNaN(new Date().toString()); // true; the string representation of a Date object cannot be parsed as a number// ArraysisNaN([]); // false; the primitive representation is "", which coverts to the number 0isNaN([1]); // false; the primitive representation is "1"isNaN([1, 2]); // true; the primitive representation is "1,2", which cannot be parsed as number

Specifications

Specification
ECMAScript® 2026 Language Specification
# sec-isnan-number

Browser compatibility

See also

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp