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() を使い分けるとよいでしょう。
-
JavaScriptでドキュメントの読み込み状態(readyState)を確認する方法
JavaScriptでドキュメント(ページ)の読み込みが完了しているかどうかを確認するには、document.readyStateプロパティを使用します。このプロパティは、現在のドキュメントの読み込み状況に応じて以下の3つの文字列を返します。loading … ドキュメントがまだ読み込み中の状態interactive … ドキュメントの解析は完了したが、画像などのサブリソースは still 読み込み中の状態complete … ドキュメントとすべてのサブリソースの読み込みが完了した状態以下は、ボタンをクリックしたタイミングでdocument.readyStateの値を判定し、ページの読み込み状
-
JavaScriptでボタンがクリックされたかどうかを判定する方法
JavaScriptを使えば、ボタンがクリックされたかどうかを簡単に判定できます。最も一般的な方法は、addEventListener()メソッドでクリックイベントを監視することです。以下に、ボタンのクリックを検出し、クリックされた回数を画面に表示するサンプルコードを紹介します。 サンプルコード <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1