how do I convert a string to int in JS, while properly handling error cases?
I want NaN returned when the argument is not really an integer quanityt:
- blank string should return NaN (not 0)
- mixed strings (e.g. "3b") should return NaN (not 3)
function cNum(param) { return param === "" ? NaN : Number(param) } cNum(""); //returns NaN cNum("3b"); //returns NaN cNum("4.5"); //returns 4.5 function stringToInt(str) { var num = parseInt(str); if (num == str) return num; return NaN; } Examples
stringToInt("") NaN stringToInt("3") 3 stringToInt("3x") Nan You don't need much- if s is a string:
s%1 will return 0 if s is an integer.
It will return a non-zero number if s is a non-integer number,
and NaN if s is not a number at all.
function isInt(s){ return (s%1===0)? Number(s):NaN; } But although the number returned is an integer, to javascript it is still just a number.