3 回答

TA贡献1780条经验 获得超1个赞
最好的方法是使用isNaN +类型转换:
更新了全押方法:
function isNumber(n) { return !isNaN(parseFloat(n)) && !isNaN(n - 0) }
使用正则表达式相同:
function isNumber(n) { return /^-?[\d.]+(?:e-?\d+)?$/.test(n); }
------------------------
isNumber ('123'); // true
isNumber ('123abc'); // true
isNumber (5); // true
isNumber ('q345'); // false
isNumber(null); // false
isNumber(undefined); // false
isNumber(false); // false
isNumber(' '); // false

TA贡献1898条经验 获得超8个赞
我找到的最好的方法是检查字符串上的方法,即:
if (x.substring) {
// do string thing
} else{
// do other thing
}
或者如果您想对数字属性进行数字检查,
if (x.toFixed) {
// do number thing
} else {
// do other thing
}
这有点像“鸭子打字”,这取决于你哪种方式最有意义。我没有足够的业力来评论,但是对于盒装字符串和数字,typeof失败,即:
alert(typeof new String('Hello World'));
alert(typeof new Number(5));
会警告“对象”。
添加回答
举报