有人知道如何在JavaScript中检查变量是数字还是字符串吗?
当前回答
检查值是否为string字面值或string对象:
function isString(o) {
return typeof o == "string" || (typeof o == "object" && o.constructor === String);
}
单元测试:
function assertTrue(value, message) {
if (!value) {
alert("Assertion error: " + message);
}
}
function assertFalse(value, message)
{
assertTrue(!value, message);
}
assertTrue(isString("string literal"), "number literal");
assertTrue(isString(new String("String object")), "String object");
assertFalse(isString(1), "number literal");
assertFalse(isString(true), "boolean literal");
assertFalse(isString({}), "object");
检查一个数字类似:
function isNumber(o) {
return typeof o == "number" || (typeof o == "object" && o.constructor === Number);
}
其他回答
你正在寻找isNaN():
console.log(!isNaN(123)); console.log(!isNaN(-1.23)); console.log(!isNaN(5-2)); console.log(!isNaN(0)); console.log(!isNaN(“0”)); console.log(!isNaN(“2”)); console.log(!isNaN(“Hello”)); console.log(!isNaN(“2005/12/12”));
参见JavaScript isNaN()函数在MDN。
jQuery使用这个:
function isNumber(obj) {
return !isNaN( parseFloat( obj ) ) && isFinite( obj );
}
聚会很晚才来;然而,当我想一次性检查某些输入是字符串还是数字时,下面的方法总是很有效。
return !!Object.prototype.toString.call(input).match(/\[object (String|Number)\]/);
function IsNumeric(num) {
return ((num >=0 || num < 0)&& (parseInt(num)==num) );
}
注意那种类型的NaN是…“数量”
typeof NaN === 'number'; // true