[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/NaN [Back]  [Original]

NaN - JavaScript | MDN

MDN Web Docs

View in English Always switch to English

NaN

20157

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

Number.NaN

NaN

NaN

NaN

NaN

  • parseInt("blabla")Number(undefined) Math.abs(undefined)
  • Math.sqrt(-1)
  • 0 * Infinity1 ** InfinityInfinity / InfinityInfinity - Infinity
  • NaN 7 ** NaN7 * "blabla" NaN
  • Date new Date("blabla").getTime()"".charCodeAt(1)

NaN JavaScript NaN !== NaN IEEE 754 NaN

NaN JavaScript

NaN

NaN Number.isNaN() isNaN() NaN NaN x !== x

js
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
Number.isNaN(NaN); // true

function valueIsNaN(v) {
  return v !== v;
}
valueIsNaN(1); // false
valueIsNaN(NaN); // true
valueIsNaN(Number.NaN); // true

isNaN() Number.isNaN() NaN NaN true NaN true

js
isNaN("hello world"); // true
Number.isNaN("hello world"); // false

BigInt isNaN() Number.isNaN()

js
isNaN(1n); // TypeError: Conversion from 'BigInt' to 'number' is not allowed.
Number.isNaN(1n); // false

NaNindexOf()lastIndexOf() NaNincludes()

js
const arr = [2, 4, NaN, 12];
arr.indexOf(NaN); // -1
arr.includes(NaN); // true

//  NaN
arr.findIndex((n) => Number.isNaN(n)); // 2

NaN

NaN

NaN IEEE 754 0x7ff NaN JavaScript

js
const f2b = (x) => new Uint8Array(new Float64Array([x]).buffer);
const b2f = (x) => new Float64Array(x.buffer)[0];
//  NaN 
const n = f2b(NaN);
const m = f2b(NaN);
//  NaN 
n[7] += 2 ** 7;
// n[0] += 2**7; 
const nan2 = b2f(n);
console.log(nan2); // NaN
console.log(Object.is(nan2, NaN)); // true
console.log(f2b(NaN)); // Uint8Array(8) [0, 0, 0, 0, 0, 0, 248, 127]
console.log(f2b(nan2)); // Uint8Array(8) [0, 0, 0, 0, 0, 0, 248, 255]
//  NaN 
m[0] = 1;
// m[7] = 1; 
const nan3 = b2f(m);
console.log(nan3); // NaN
console.log(Object.is(nan3, NaN)); // true
console.log(f2b(NaN)); // Uint8Array(8) [0, 0, 0, 0, 0, 0, 248, 127]
console.log(f2b(nan3)); // Uint8Array(8) [1, 0, 0, 0, 0, 0, 248, 127]

NaN

NaN NaN NaN 0 1

js
NaN ** 0 === 1; // true

ECMAScript 2027 LanguageSpecification
# sec-value-properties-of-the-global-object-nan


Web Proxy Viewer  |  New URL  |  Original Page