有人知道如何在JavaScript中检查变量是数字还是字符串吗?
当前回答
//testing data types accurately in JavaScript (opposed to "typeof")
//from http://bonsaiden.github.com/JavaScript-Garden/
function is(type, obj) {
var clas = Object.prototype.toString.call(obj).slice(8, -1);
return obj !== undefined && obj !== null && clas === type;
}
//basic usage
is('String', 'test'); // true
is('Array', true); // false
或者调整它以返回未知类型:
function realTypeOf(obj) {
return Object.prototype.toString.call(obj).slice(8, -1);
}
//usage
realTypeOf(999); // 'Number'
2012年5月12日更新: Javascript的完整例子:A Better typeof。
其他回答
自ES2015以来,检查变量的正确方法 是number . isfinite (value)
例子:
Number.isFinite(Infinity) // false
Number.isFinite(NaN) // false
Number.isFinite(-Infinity) // false
Number.isFinite(0) // true
Number.isFinite(2e64) // true
Number.isFinite('0') // false
Number.isFinite(null) // false
哦?使用正则表达式!:)
function isInteger(val) {
return val.match(/^[0-9]$/)
}
function isFloat(val) {
return val.match(/^[0-9]*/\.[0-9]+$/)
}
注意那种类型的NaN是…“数量”
typeof NaN === 'number'; // true
仅供参考,如果你使用jQuery你有
$.isNumeric()
来处理这个问题。更多详情请访问http://api.jquery.com/jQuery.isNumeric/
或者只使用isNaN()的倒数:
if(!isNaN(data))
do something with the number
else
it is a string
是的,使用jQuery的$. isnumeric()更有趣。