如何使用javascript检查var是字符串还是数字

Rom*_*omi 6 javascript typeof

我有一个变量var number="1234",虽然数字是一个数值,但它介于两者之间,""所以当我使用它typeofNaN我把它作为字符串检查.

function test()
{
    var number="1234"

if(typeof(number)=="string")
{
    alert("string");
}
if(typeof(number)=="number")
{
    alert("number");
}

}
Run Code Online (Sandbox Code Playgroud)

我总是alert("string"),你能告诉我如何检查这是否是一个数字?

Ein*_*eki 7

到目前为止,我理解您的问题,您要求测试以检测字符串是否表示数值.

快速测试应该是

function test() {
   var number="1234"
   return (number==Number(number))?"number":"string"
}
Run Code Online (Sandbox Code Playgroud)

作为Number,如果没有new关键字调用,则将字符串转换为数字.如果变量内容未被触及(==将数值转换回字符串),则表示您正在处理数字.否则就是一个字符串.

function isNumeric(value) {
   return (value==Number(value))?"number":"string"
}

/* tests evaluating true */
console.log(isNumeric("1234"));  //integer
console.log(isNumeric("1.234")); // float
console.log(isNumeric("12.34e+1")); // scientific notation
console.log(isNumeric(12));     // Integer
console.log(isNumeric(12.7));   // Float
console.log(isNumeric("0x12")); // hex number

/* tests evaluating false */
console.log(isNumeric("1234e"));
console.log(isNumeric("1,234"));
console.log(isNumeric("12.34b+1"));
console.log(isNumeric("x"));
Run Code Online (Sandbox Code Playgroud)


小智 5

这条线

 var number = "1234";
Run Code Online (Sandbox Code Playgroud)

创建一个值为"1234"的新String对象.通过将值放在引号中,您说它是一个字符串.

如果要检查字符串是否只包含数字,可以使用正则表达式.

if (number.match(/^-?\d+$/)) {
    alert("It's a whole number!");
} else if (number.match(/^-?\d+*\.\d+$/)) {
    alert("It's a decimal number!");
}
Run Code Online (Sandbox Code Playgroud)

模式/^\d+$/意味着:在^字符串的start()处,有一个可选的减号(-?),然后是一个数字(\d),后跟任何更多的数字(+),然后是字符串的结尾($).另一种模式只是在数字组之间寻找一个点.