JavaScript NaNとは何か NaNの判定方法
スポンサーリンク
このドキュメントの内容は、以下の通りです。
- はじめに
- NaNの読み方
- 一般論としての NaN とは
- JavaScript の NaN とは
- NaNの判定の方法
- NaNとNumber.NaNの違いは?
- isNaN()とNumber.isNaN()の違いは?
はじめに
プログラミング言語には、謎の文字列・定数がいっぱいあります。C言語で言えば、例えばNULLです。JavaScript にもいろいろあると思いますが、今回は NaN をとりあげます。
NaNの読み方
NaNは、ナンと読みます。
一般論としての NaN とは
一般論としての NaN は Not a Number です。日本語で言えば、数字ではない、ということになります。コンピュータで、浮動小数点演算で、不正なオペランドが与えられたときに、結果を表す値として利用されていました。
算術演算において、ゼロ同士の除算 0.0 / 0.0 では、 NaN が発生します。
JavaScript の NaN とは
NaN(ナン)とは、Not A Numberの略で、数値ではないことを表す、特別な値です。
NaN は、グローバルオブジェクトのプロパティです。NaN には、書き込みができません。
JavaScript で parseInt() などを利用したときに、数値に変換できないオブジェクトを渡した場合、NaNが返されます。NaNであるかの判定には、isNaNで調べることができます。
一般論として、ゼロ同士の除算を行うと、NaNになると説明しましたが、 node コマンドで以下の計算を実行すると NaNが発生することを確認できます。
% node > 0/0 NaN > 0.0/0.0 NaN
NaNの判定の方法
NaN であるかを検証するには、isNaN を利用できます。
var x = parseInt ( value ); if ( isNaN ( x ) ) { // NaN }
下記はサンプルコードです。
function nan_test(x) { if (isNaN(x)) { return NaN; } return x; } console.log( nan_test ('1') ); // (A) console.log( nan_test ('Not-A-Number') ); // (B)
上記を実行した場合、以下の結果が得られます。
1 NaN
(A) で確認した 1 は 数字で、(B)で指定した文字列は 非数であることが確認できました。
NaN と NaN を比較すると期待した結果が得られません。
NaN と NaN を == や === で比較した場合、 true が返ってくることを期待するかもしれませんが、以下の結果になります。
> NaN == NaN false > NaN === NaN false
NaN であるかどうかを調べる場合には、 isNaN を使用しましょう。
NaNとNumber.NaNの違いは?
JavaScript には、 Numberと呼ばれる標準ビルトインオブジェクトがあります。Number のプロパティの1つに NaN があります。 NaNと Number.NaNは、同じです。
isNaN()とNumber.isNaN()の違いは?
NaN と Number.NaN は、同じであると説明をいたしました。Number には Number.isNaN() があります。
NaN と Number.NaN が同じなのだからisNaN() と Number.isNaN() も同じではないか?と思うかもしれませんが、実は、異なります。
nodeコマンドで以下の実験を行いました。
> isNaN('hello') true > Number.isNaN('hello') false
上記の通り、 isNaN と Number.isNaN の違いがあることがわかります。
実は、Number.isNaN()は、値そのものが NaNであるときだけ trueを返します。
> Number.isNaN(NaN) true
もちろん isNaN で NaN を確認すると true です。
> isNaN(NaN) true
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12