JavaScriptで変数がNaNかどうかを判定する方法
NaNはJavaScriptのグローバルプロパティの一つで、「非数(Not-a-Number)」、つまり数値として扱えない値を表す特殊な値です。数値演算の結果が不正になった場合などに返されます。
ある値がNaNかどうかを判定するには、isNaN()メソッドまたはNumber.isNaN()メソッドを使用します。
isNaN()とNumber.isNaN()の違い
isNaN()は引数をまず数値へ変換してから判定を行うため、空文字列('')やfalseなども0に変換され、「NaNではない」という結果になります。一方、Number.isNaN()は型変換を行わず、値そのものがNaNである場合にのみtrueを返します。厳密な判定が必要な場合は、Number.isNaN()の使用が推奨されます。
サンプルコード
以下は、JavaScriptで変数がNaNかどうかをチェックする実行例です。ボタンをクリックすると、さまざまな値に対するisNaN()の判定結果が表示されます。
<!DOCTYPE html>
<html>
<body>
<button onclick="display()">Check</button>
<p id="test"></p>
<script>
function display() {
var a = "";
a = a + isNaN(6234) + ": 6234<br>";
a = a + isNaN(-52.1) + ": -52.1<br>";
a = a + isNaN('Website') + ": 'Hello'<br>";
a = a + isNaN(NaN) + ": NaN<br>";
a = a + isNaN('') + ": ''<br>";
a = a + isNaN(0) + ": 0<br>";
a = a + isNaN(false) + ": false<br>";
document.getElementById("test").innerHTML = a;
}
</script>
</body>
</html>
-
JavaScriptでドキュメントの読み込み状態(readyState)を確認する方法
JavaScriptでドキュメント(ページ)の読み込みが完了しているかどうかを確認するには、document.readyStateプロパティを使用します。このプロパティは、現在のドキュメントの読み込み状況に応じて以下の3つの文字列を返します。loading … ドキュメントがまだ読み込み中の状態interactive … ドキュメントの解析は完了したが、画像などのサブリソースは still 読み込み中の状態complete … ドキュメントとすべてのサブリソースの読み込みが完了した状態以下は、ボタンをクリックしたタイミングでdocument.readyStateの値を判定し、ページの読み込み状
-
JavaScriptで配列内のNaNを検出する方法|NaN !== NaNの性質とNumber.isNaN()の使い方
真偽値(truthy/falsy)が混在する配列から、元の配列内でNaNに該当する要素のインデックスを抽出する関数の書き方を解説します。NaN !== NaN という特殊な性質NaNのデータ型は実は「number」です。NaNはfalsy(偽値)な値ですが、他のどのデータ型や変数にも存在しない特異な性質を持っています。それが「NaN === NaN が false を返す」という点です。このような挙動を示すのはNaNだけです。この性質をうまく利用すれば、NaNのインデックスを簡単に特定できます。コードは以下のとおりです。const arr = [7, 1, 123abc, undefined,