【JavaScript】数値か判定するisNumber関数

  • このエントリーをはてなブックマークに追加

入力した値が数値か数値以外かを判定するためにisNumber関数を使う。
typeof演算子を使ってnumberなら数値と判定できる。しかし、Infinityと-Infinityはtypeof演算子を使うとnumberと判定されてしまう。isNumber関数ではInfinityと-Infinityをfalseと判定する。
このため、Infinityと-Infinityを数値と判断したくない場合はisNumber関数を使う。

空文字、Infinity、-Infinity、文字列0、nullの場合、isNumber関数はfalseになる。
数値0の場合、isNumber関数はtrueになる。



//数値か判定する
const isNumber = function(value) {
    return typeof value === 'number' && isFinite(value);
};

let test = '';

console.log("------------");

console.log("空文字の場合");
console.log("isFinite(test) = " + isFinite(test));
console.log("typeof test = " + typeof test);
console.log("isNumber(test) = " + isNumber(test));

test = Infinity;
console.log("Infinityの場合");
console.log("isFinite(test) = " + isFinite(test));
console.log("typeof test = " + typeof test);
console.log("isNumber(test) = " + isNumber(test));

test = -Infinity;
console.log("-Infinityの場合");
console.log("isFinite(test) = " + isFinite(test));
console.log("typeof test = " + typeof test);
console.log("isNumber(test) = " + isNumber(test));

test = 0;
console.log("数値0の場合");
console.log("isFinite(test) = " + isFinite(test));
console.log("typeof test = " + typeof test);
console.log("isNumber(test) = " + isNumber(test));

test = '0';
console.log("文字列の0の場合");
console.log("isFinite(test) = " + isFinite(test));
console.log("typeof test = " + typeof test);
console.log("isNumber(test) = " + isNumber(test));

test = null;
console.log("nullの場合");
console.log("isFinite(test) = " + isFinite(test));
console.log("typeof test = " + typeof test);
console.log("isNumber(test) = " + isNumber(test));

console.log("------------");

/*

空文字の場合
isFinite(test) = true
typeof test = string
isNumber(test) = false
Infinityの場合
isFinite(test) = false
typeof test = number
isNumber(test) = false
-Infinityの場合
isFinite(test) = false
typeof test = number
isNumber(test) = false
数値0の場合
isFinite(test) = true
typeof test = number
isNumber(test) = true
文字列の0の場合
isFinite(test) = true
typeof test = string
isNumber(test) = false
nullの場合
isFinite(test) = true
typeof test = object
isNumber(test) = false

*/



  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*