A RetroSearch Logo

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

Search Query:

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

isNaN() - JavaScript | MDN

isNaN()

Baseline Widely available

isNaN() 関数は、必要に応じてまず値を数値に変換してから、引数が NaN (非数) かどうかを判定します。 isNaN() 関数内の型変換は予想外の結果になることがあるため、 Number.isNaN() を使用することをお勧めします。

試してみましょう
function milliseconds(x) {
  if (isNaN(x)) {
    return "Not a Number!";
  }
  return x * 1000;
}

console.log(milliseconds("100F"));
// 予想される結果: "Not a Number!"

console.log(milliseconds("0.0314E+2"));
// 予想される結果: 3140
構文 引数
value

テストされる値。

返値

指定された値を数値に変換した後で NaN であれば、 true を返します。それ以外の場合は、 false を返します。

解説

isNaN() は、グローバルオブジェクトの関数プロパティです。

数値の場合、 isNaN() は、その数値が NaN であるかどうかを検査します。 isNaN() 関数の引数が数値型でない場合、その値はまず数値に変換され、その結果が NaN と比較されます。

数値以外の引数に対する isNaN() のこの動作は、紛らわしいかもしれません。例えば、空文字列は 0 に強制変換されますが、論理値は 0 または 1 に強制変換されます。どちらの値も直感的には「数値ではない」ですが、 NaN と評価されないため、 isNaN() は false を返します。したがって、 isNaN() は、「入力は浮動小数点 NaN 値であるか」という質問にも、「入力は数値ではないか」という質問にも答えません。

Number.isNaN() は、値が数値 NaN であるかどうかを検査する、より信頼性の高い方法です。あるいは、式 x !== x を使用することもできます。どちらの解決策も、グローバルな isNaN() の信頼できない誤検出の影響を受けません。値が数値であるかどうかを検査するには、 typeof x === "number" を使用してください。

isNaN() 関数は、「入力は、数値コンテキストで使用した場合、 NaN と機能的に同等であるか」という質問に答えます。 isNaN(x) が false を返す場合、 x は NaN ではない有効な数値であるかのように、算術式で使用することができます。 isNaN(x) が true を返す場合、 x は NaN に強制変換され、ほとんどの算術式は NaN を返します(NaN は伝播するため)。これを使用すると、例えば、関数の引数が算術処理可能(数値と同様に使用可能)であるかどうかをテストし、数値ではない値の場合にエラーを発生させたり、既定値を提供して処理させたりすることができます。このようにして、コンテキストに応じて値を暗黙的に変換することで、 JavaScript が提供する汎用性を最大限に活用する関数を持つことができます。

メモ: + 演算子は、数値の加算と文字列の連結の両方を実行します。したがって、 isNaN() が両方のオペランドに対して false を返した場合でも、 + 演算子は算術演算子として使用されないため、文字列を返す場合があります。例えば、 isNaN("1") は false を返しますが、 "1" + 1 は "11" を返します。確実に数値で処理を行うには、値を数値に変換し、 Number.isNaN() を使用して結果を検査してください。

例

isNaN() は、値 NaN でなく、数値でもない値に対して true を返すことに注意してください。

isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true

isNaN(true); // false
isNaN(null); // false
isNaN(37); // false

// 文字列
isNaN("37"); // false: "37" は非数でない数値 37 に変換される
isNaN("37.37"); // false: "37.37" は非数でない数値 37.37 に変換される
isNaN("37,5"); // true
isNaN("123ABC"); // true: Number("123ABC") の結果は非数
isNaN(""); // false: 空文字列は非数でない 0 に変換される
isNaN(" "); // false: 半角スペースからなる文字列は非数でない 0 に変換される

// 日付
isNaN(new Date()); // false: Date オブジェクトは数値(タイムスタンプ)に変換される
isNaN(new Date().toString()); // true: Date オブジェクトの文字列表現は数値として解釈できない

// 配列
isNaN([]); // false: プリミティブ表現は "" となり、数値 0 へ変換される
isNaN([1]); // false: プリミティブ表現は "1" となる
isNaN([1, 2]); // true: プリミティブ表現は "1,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