JavaScript で数値判定

与えられた x が数値か、もしくは文字列での数字かどうかを調べる。数値または数字なら true.

function isNumber(x){ 
    if( typeof(x) != 'number' && typeof(x) != 'string' )
        return false;
    else 
        return (x == parseFloat(x) && isFinite(x));
}


テスト

isNumber(-1) // true
isNumber(0) // true
isNumber(1) // true
isNumber(0.0) // true
isNumber(1.5) // true
isNumber(10e+3) // true
isNumber(10e-3) // true
isNumber("-1") //true
isNumber("0")  // true
isNumber("1") //true
isNumber("0.0") // true
isNumber("1.5") // true
isNumber("10e+3") // true
isNumber("10e-3") // true

isNumber(true) //false
isNumber(false) //false
isNumber(null) //false
isNumber(undefined) //false
isNumber([]) //false
isNumber({}) //false
isNumber([1]) //false
isNumber(NaN) //false

前にも似たエントリを書いたけどこっちのほうがシンプルなので。