检查变量是否为数字

Ric*_*nop 29 javascript jquery

如何检查变量是数字,整数还是字符串数字?

在PHP中,我可以这样做:

if (is_int($var)) {
    echo '$var is integer';
}
Run Code Online (Sandbox Code Playgroud)

要么:

if (is_numeric($var)) {
    echo '$var is numeric';
}
Run Code Online (Sandbox Code Playgroud)

我怎么能在jQuery/JavaScript中做到这一点?

小智 40

javascript函数isNaN(variable)应该可以解决问题.如果数据不是数字,则返回true.

  • 不要使用isNaN,它已经坏了.请参阅https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/isNaN并使用@Christoph提出的解决方案. (2认同)

Chr*_*oph 25

我会去的

isFinite(String(foo))
Run Code Online (Sandbox Code Playgroud)

请参阅此答案以获取解释原因.如果您只想接受整数值,请查看此处.

  • 当心这个.`isFinite(null)=== true` (6认同)

Jon*_*Raa 6

我对javascript很陌生,但是似乎typeof(blah)可以让您检查某些东西是否是数字(对于字符串来说不是真的)。一个知道OP要求输入字符串+数字的人,但我认为这对于其他人来说可能值得记录。

例如:

function isNumeric(something){
    return typeof(something) === 'number';
}
Run Code Online (Sandbox Code Playgroud)

这是文档

这是typeof产生的一些控制台运行:

typeof(12);
"number"
typeof(null);
"object"
typeof('12');
"string"
typeof(12.3225);
"number"  
Run Code Online (Sandbox Code Playgroud)

我知道的一点古怪

typeof(NaN);
"number"
Run Code Online (Sandbox Code Playgroud)

但是如果没有类似的东西就不是javascript吗?!

  • @AdamChalcraft 大多数 linters/程序员可能会不同意并说相反的 - 总是使用 `===` 除非有充分的理由不这样做,如果你养成使用 `==` 的习惯,你会被某些东西烧伤奇怪的事情在某个时刻发生。在这种情况下,没有发生类型强制,因此无论哪种方式,这都是一个相当有争议的问题。有关该主题的教育性(也很搞笑)咆哮,请查看詹姆斯·米肯斯的“将其全部洗掉”http://scholar.harvard.edu/files/mickens/files/towashitallaway.pdf (3认同)