有谁知道如何检查JavaScript中的变量是数字还是字符串?
检查JavaScript中变量是数字还是字符串
function IsNumeric(num) {
return ((num >=0 || num < 0)&& (parseInt(num)==num) );
}
只需使用
myVar.constructor == String
要么
myVar.constructor == Number
如果要处理定义为对象或文字的字符串并进行保存,则不想使用辅助函数。
类型检查
您可以使用typeof
运算符检查变量的类型:
typeof variable
价值检查
下面的代码对数字返回true,对其他任何东西返回false:
!isNaN(+variable);
嗯?只需使用正则表达式即可!:)
function isInteger(val) {
return val.match(/^[0-9]$/)
}
function isFloat(val) {
return val.match(/^[0-9]*/\.[0-9]+$/)
}
jQuery使用以下代码:
function isNumber(obj) {
return !isNaN( parseFloat( obj ) ) && isFinite( obj );
}
我认为将var转换为字符串会降低性能,至少在最新的浏览器中执行的此测试表明如此。
因此,如果您关心性能,我会使用:
typeof str === "string" || str instanceof String
用于检查变量是否为字符串(即使使用var str = new String("foo")
,str instanceof String
也将返回true)。
至于检查,如果它是一个数字我会去的原生:isNaN
; 功能。
嗯,怎么样:
function IsString(obj) {
return obj !== undefined && obj != null && obj.toLowerCase !== undefined;
}
经过几个月的进一步审查,这只能保证obj
是一个toLowerCase
定义了方法或属性名称的对象。我为自己的回答感到ham愧。请参阅票数最高的typeof
一个。
这是一种基于以下想法的方法:通过添加零或空字符串将输入强制为数字或字符串,然后进行类型相等性比较。
function is_number(x) { return x === x+0; }
function is_string(x) { return x === x+""; }
由于某些不可思议的原因,x===x+0
似乎效果优于x===+x
。
是否有任何失败的情况?
同样:
function is_boolean(x) { return x === !!x; }
这似乎比x===true || x===false
或略快typeof x==="boolean"
(并且比快得多x===Boolean(x)
)。
然后还有
function is_regexp(x) { return x === RegExp(x); }
所有这些都取决于特定于每种类型的“标识”操作的存在,该操作可以应用于任何值并可靠地产生所讨论类型的值。我无法想到这样的日期操作。
对于NaN,有
function is_nan(x) { return x !== x;}
这基本上是下划线的版本,因为它代表约比快四倍isNaN()
,但在下划线源提到,“南是唯一的评论数量不等于本身”,并增加了对_.isNumber检查。为什么?还有哪些其他对象不等于自己?另外,下划线使用- x !== +x
但是+
这里有什么不同?
然后对于偏执狂:
function is_undefined(x) { return x===[][0]; }
或这个
function is_undefined(x) { return x===void(0); }
或仅使用以下内容的倒数isNaN()
:
if(!isNaN(data))
do something with the number
else
it is a string
是的,使用jQuery $.isNumeric()
更有趣。
您可以将其除以1吗?
我认为问题将是类似“ 123ABG”的字符串输入
var Check = "123ABG"
if(Check == Check / 1)
{
alert("This IS a number \n")
}
else
{
alert("This is NOT a number \n")
}
这是我最近做的一种方式。
您正在寻找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"));
请参见MDN上的JavaScript isNaN()函数。
检查值是字符串文字还是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);
}
晚会很晚;但是,当我想检查某些输入是字符串还是数字时,以下内容对我来说一直很有效。