js判斷數(shù)字類型匯總
最近在寫代碼的時(shí)候,有些邏輯需要判斷數(shù)字類型,等用到的時(shí)候才發(fā)現(xiàn)自己了解的方法不太嚴(yán)密,然后就決心查資料匯總了解下有哪些方法比較嚴(yán)密
第一種:typeof + isNaN
使用typeof可以判斷是否是一個(gè)數(shù)字類型,但是NaN也是數(shù)字類型,為了篩除這個(gè)可能,進(jìn)一步通過isNaN來篩除。這種方法會(huì)遺漏Infinity
function isNumber(num) {
return typeof num === 'number' && !isNaN(num)
}
第二種:typeof + isFinite
使用typeof可以判斷是否是一個(gè)數(shù)字類型,但是NaN和Infinity也是數(shù)字類型,為了篩除這個(gè)可能,進(jìn)一步通過isFinite來篩除NaN和Infinity
function isNumber(num) {
return typeof num === 'number' && isFinite(num)
}
第三種:最簡(jiǎn)單的一種
function isNumber(num) {
return num === +num
}
第四種:Object.prototype.toString.call
function isNumber(num) {
return Object.prototype.toString.call(num) === '[object Number]' && isFinite(num)
}
第五種:Object.prototype.toString.call
function isNumber(num) {
return Object.prototype.toString.call(num) === '[object Number]' && !isNaN(num)
}
第六種:正則表達(dá)式(最推薦的一種)
function isNumber(num) {
return /^[0-9]+.?[0-9]*$/.test(num)
}