I found that if you want to check if something is numeric (or not), then the combination of Number.isNaN() with Number.parseInt() or Number.parseFloat() (depending on what you expect) covers most use cases:
consider the following questions: check a bunch of different input vars against several - these are numerical tests:
r = [NaN, undefined, null, false, true, {}, [], '', ' ', 0, 1, '0', '1'] .map(function(v){return [ v, isNaN(v), Number.isNaN(v), Number.isInteger(v), Number.parseInt(v, 10), Number.isNaN( Number.parseInt(v, 10)) ];}); console.table(r);
result:
NaN , true , true , false, NaN, true undefined, true , false, false, NaN, true null , false, false, false, NaN, true false , false, false, false, NaN, true true , false, false, false, NaN, true Object , true , false, false, NaN, true Array(0) , false, false, false, NaN, true '' , false, false, false, NaN, true ' ' , false, false, false, NaN, true 0 , false, false, true , 0 , false 1 , false, false, true , 1 , false '0' , false, false, false, 0 , false '1' , false, false, false, 1 , false
Pay attention to the last column, which, as a rule, I want in my experience.