A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/NaN below:

NaN - JavaScript | MDN

NaN

Baseline Widely available

グローバルプロパティ NaN は非数 (Not-A-Number) を表す値です。

書込可能 不可 列挙可能 不可 設定可能 不可 試してみましょう
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 の初期値は非数であり、 Number.NaN の値と同等です。最近のブラウザーであれば、 NaN は設定、書き込みがともに不可能なプロパティとなっています。そうでない場合であっても、オーバーライドは無効となります。プログラムの中で NaN を使用するのは、むしろまれなことです。

NaN を返す演算には 5 種類があります。

例 NaN に対するテスト

NaN は別の NaN 値を含むあらゆる数と (==、!=、===、!== によって) 同じではないと比較されます。ある値が NaN かどうかを的確に判定するには Number.isNaN() か isNaN() を使用してください。あるいは自己比較を実行しましょう。 NaN は、また NaN だけが、自身と同等ではないと比較評価されます。

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 を返します。

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

同じ理由で、 bigint 値の場合は isNaN() ではエラーが発生しますが、 Number.isNaN() では発生しません。

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

加えて、配列メソッドの中には NaN を見つけることができるもの、できないものがあります。

let arr = [2, 4, NaN, 12];
arr.indexOf(NaN); // -1 (false)
arr.includes(NaN); // true
arr.findIndex((n) => Number.isNaN(n)); // 2
仕様書 ブラウザーの互換性 関連情報

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