Qiita初投稿です!
よろしくお願いします。
#【javascript】 NaNを使った条件分岐について
NaNを使った、数値か数値でないかの条件分岐で少し時間を取られたのでここに記述しておきます。
使った関数
parseInt(str)
→対象の文字列を整数に変換する
戻り値:対象の文字列を数値に変換できない場合はNaNを返す(NaNはNot a Numberの略)
isNaN(value)
→対象の値がNaNかどうかを調べる
戻り値:対象の値がNaNならtrue, それ以外ならfalseを返す
まず、parseIntに文字列を入れた時の戻り値がNaNになるので、これを使い条件分岐しようとしましたが失敗しました。
失敗のコードがこちら。
let num = 1;
let intNum = parseInt(num);
//intNumがNaNかそれ以外かで分岐
if(intNum !== NaN) {
console.log('数字だよ');
} else {
console.log('数字じゃないよ');
}
結果は
数字じゃないよ
と出力されます。
これは、NaNを(不)等価演算子にかけると必ずfalseを返す為で、これではNaNかどうか調べられないのです。
この事を知らず、かなり時間を取られてしまいました、、、
成功のコード
let num = 1;
let intNum = parseInt(num);
//intNumがNaNならtrue,それ以外ならfalse
if(isNaN(intNum)) {
console.log('数字じゃないよ');
} else {
console.log('数字だよ');
}
isNaN関数を使い、NaNかそれ以外かで条件分岐ができるようになりました。
補足や訂正などありましたら、ぜひご教授いただければ嬉しいです。
最後まで見ていただきありがとうございます。
2019.6.05追記
コメント欄でご指摘いただいたtypeof演算子の使い方を記事にしました。
【typeof演算子】データ型を文字列として取得する際の書き方と注意点