判断是否是数字

1
2
3
4
5
6
7
8
9
function isNumber(num) {
if (typeof num === 'number') {
return num - num === 0;
}
if (typeof num === 'string' && num.trim() !== '') {
return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);
}
return false;
}

判断num - num === 0的原因:

  1. typeof NaN === 'number'等于truetypeof Infinity === 'number'等于true
  2. NaN - NaN等于NaNInfinity - Infinity等于NaN