我的猜测是:
function isNumber(val) {
return val === +val;
}
有更好的方法吗?
上一页参考
答案 0 :(得分:3)
var isNumber = function isNumber(value)
{
return typeof value === 'number' && isFinite(value);
}
以上代码摘自“JavaScript - 好的部分”一书。
/ *答案更新开始 - 回复一些意见
以下是提出问题的人和其他人* /
var isNumber = function isNumber(value) {
return typeof value === 'number' && isFinite(value);
}
var isNumberObject = function isNumberObject(n) {
return (Object.prototype.toString.apply(n) === '[object Number]');
}
var isCustomNumber = function isCustomNumber(n){
return isNumber(n) || isNumberObject(n);
}
console.log(isCustomNumber(new Number(5)));
console.log(isCustomNumber(new Number(5.2)));
console.log(isCustomNumber(new Number(5.5)));
console.log(isCustomNumber(new Number(-1)));
console.log(isCustomNumber(new Number(-1.5)));
console.log(isCustomNumber(new Number(-0.0)));
console.log(isCustomNumber(new Number(0.0)));
console.log(isCustomNumber(new Number(0)));
console.log(isCustomNumber(new Number(1e5)));
console.log(isCustomNumber(5));
console.log(isCustomNumber(5.2));
console.log(isCustomNumber(5.5));
console.log(isCustomNumber(-1));
console.log(isCustomNumber(-1.5));
console.log(isCustomNumber(-0.0));
console.log(isCustomNumber(0.0));
console.log(isCustomNumber(0));
console.log(isCustomNumber(1e5));
/ *答案更新结束 - 回复一些意见
以下是提出问题的人和其他人* /
答案 1 :(得分:2)
function isNumber(val){
return typeof val==='number';
}
答案 2 :(得分:2)
function isNumber(val) {
// negative or positive
return /^[-]?\d+$/.test(val);
}
答案 3 :(得分:2)
如果您不想包含字符串,并且确实想要包含Infinity, 你可以将参数的数字强制与参数进行比较:
function isNumber(n){
return Number(n)=== n;
}
//测试
[0, 1, 2, -1, 1.345e+17, Infinity, false, true, NaN, '1', '0'].map(function(itm){
return itm+'= '+isNumber(itm);
});
// returned values
0= true
1= true
2= true
-1= true
134500000000000000= true
Infinity= true
false= false
true= false
NaN= false
'1'= false
'0'= false
答案 4 :(得分:1)
如果我需要为API编写isNumber
函数,我会使用:
function isNumber(val) {
return !isNaN(val);
}
...但我不打算写一个isNumber
函数,因为我只使用isNaN
。
答案 5 :(得分:1)
如果您希望"23"
成为数字,那么
function isNumber(val) {
return !isNaN(val);
}
答案 6 :(得分:1)
我喜欢这个解决方案:
function isNumber(val) {
return (val >=0 || val < 0);
}