3 回答

TA貢獻1780條經(jīng)驗 獲得超1個贊
最好的方法是使用isNaN +類型轉(zhuǎn)換:
更新了全押方法:
function isNumber(n) { return !isNaN(parseFloat(n)) && !isNaN(n - 0) }
使用正則表達(dá)式相同:
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條經(jīng)驗 獲得超8個贊
我找到的最好的方法是檢查字符串上的方法,即:
if (x.substring) {
// do string thing
} else{
// do other thing
}
或者如果您想對數(shù)字屬性進行數(shù)字檢查,
if (x.toFixed) {
// do number thing
} else {
// do other thing
}
這有點像“鴨子打字”,這取決于你哪種方式最有意義。我沒有足夠的業(yè)力來評論,但是對于盒裝字符串和數(shù)字,typeof失敗,即:
alert(typeof new String('Hello World'));
alert(typeof new Number(5));
會警告“對象”。
添加回答
舉報