JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでNaNがNaNであるかどうかを確認する方法

NaN(Not a Number)は、JavaScriptにおいて唯一「自分自身と等しくない」という特殊な性質を持つ値です。他の値であれば自分自身と比較すると等しくなりますが、NaNだけは例外で、NaNとNaNを比較しても等しいと判定されません。

例1:== 演算子ではNaNを判定できない

<html>
<body>
  <script>
    var val = 54/"the";
    document.write(val);
    document.write("</br>");
    if(val == NaN) {
      document.write("NaNはNaNと等しい");
    }
    else {
      document.write("別の方法で確認する必要があります");
    }
  </script>
</body>
</html>

出力結果

NaN
別の方法で確認する必要があります

実際の開発では、「ある値がNaNかどうか」を判定したいケースがよくあります。しかし、上記の例のように == 演算子では正しく判定できません。そこでES6(ECMAScript 2015)では、この問題を解決するために Object.is() メソッドが導入されました。Object.is() を使えば、値がNaNであるかどうかを正確に判定できます。

例2:Object.is()を使ったNaNの判定

<html>
<body>
<script>
  var val = 54/"the";
  document.write(val);
  document.write("</br>");
  document.write(Object.is(val,NaN));
</script>
</body>
</html>

出力結果

NaN
true

このように、54/"the" のような数値と文字列の除算結果はNaNとなり、Object.is(val, NaN) は true を返します。なお、NaNの判定には Number.isNaN() メソッドを使う方法もあります。こちらもES6で追加されたメソッドで、引数がNaNかどうかを判定できます。グローバル関数の isNaN() とは異なり、暗黙的な型変換を行わないため、より安全かつ厳密に判定できる点が特徴です。用途に応じて Object.is() と Number.isNaN() を使い分けるとよいでしょう。

  1. JavaScriptでドキュメントの読み込み状態(readyState)を確認する方法

    JavaScriptでドキュメント(ページ)の読み込みが完了しているかどうかを確認するには、document.readyStateプロパティを使用します。このプロパティは、現在のドキュメントの読み込み状況に応じて以下の3つの文字列を返します。loading … ドキュメントがまだ読み込み中の状態interactive … ドキュメントの解析は完了したが、画像などのサブリソースは still 読み込み中の状態complete … ドキュメントとすべてのサブリソースの読み込みが完了した状態以下は、ボタンをクリックしたタイミングでdocument.readyStateの値を判定し、ページの読み込み状

  2. JavaScriptでボタンがクリックされたかどうかを判定する方法

    JavaScriptを使えば、ボタンがクリックされたかどうかを簡単に判定できます。最も一般的な方法は、addEventListener()メソッドでクリックイベントを監視することです。以下に、ボタンのクリックを検出し、クリックされた回数を画面に表示するサンプルコードを紹介します。 サンプルコード <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1