js判斷數字類型匯總
最近在寫代碼的時候,有些邏輯需要判斷數字類型,等用到的時候才發現自己了解的方法不太嚴密,然后就決心查資料匯總了解下有哪些方法比較嚴密
第一種:typeof + isNaN
使用typeof可以判斷是否是一個數字類型,但是NaN也是數字類型,為了篩除這個可能,進一步通過isNaN來篩除。這種方法會遺漏Infinity
function isNumber(num) {
return typeof num === 'number' && !isNaN(num)
}
第二種:typeof + isFinite
使用typeof可以判斷是否是一個數字類型,但是NaN和Infinity也是數字類型,為了篩除這個可能,進一步通過isFinite來篩除NaN和Infinity
function isNumber(num) {
return typeof num === 'number' && isFinite(num)
}
第三種:最簡單的一種
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)
}
第六種:正則表達式(最推薦的一種)
function isNumber(num) {
return /^[0-9]+.?[0-9]*$/.test(num)
}