JavaScript’s NaN stands for ‘Not a Number’. This is used when an operation that should have returned a number has failed.
NaN used in any operation will always return NaN.
NaN is not equivalent to any value, including itself. (NaN == NaN) returns false.
You can test this value with the isNaN() function. Booleans, strings with only numbers, or numeric values will return false when passed to the isNaN() function. Strings that contain other characters besides numbers, and NaN itself, will return true when passed in. If the value can be converted to a number it will return true, otherwise, it will return false.
Objects use the valueOf() and toString() methods to determine if the returned value can be converted into a number.
The Number() casting function
Number(true); //1
Number(false); //0
Number(13); //13
Number("13"); //13
var b;
Number(b); //Number(undefined) NaN
var b=10;
Number(b); //10
Number("1.5"); //1.5
Number("01.5"); //1.5
Number("0xA"); //10
Number(""); //0
Number("cindy"); //NaN
Number("123cindy"); //NaN
Number("123.123.123"); //NaN
Number("4.89e7"); //48900000
The parseInt() function
parseInt(true); //NaN
parseInt(false); //NaN
parseInt(13); //13
parseInt("13"); //13
var k; //k is undefined
parseInt(k); //NaN
var b=10;
parseInt(b); //10
parseInt("1.5") //1
parseInt("01.5") //1
parseInt("0xA"); //10
parseInt(""); //NaN
parseInt("cindy"); //NaN
parseInt("123cindy") //123
parseInt("123.123.123") //123
parseInt("4.89e7") //4
parseInt() takes a second argument which will tell it to parse in a certain base system.
parseInt("10",16); //hexadecimal 16
parseInt("10",8); //octal 8
parseInt("10",10); //decimal 10
The parseFloat() function
parseFloat(true); //NaN
parseFloat(false); //NaN
parseFloat(13); //13
parseFloat("13"); //13
var j; //undefined
parseFloat(j); //NaN
var b=10;
parseFloat(b) //10
parseFloat("1.5") //1.5
parseFloat("01.5") //1.5
parseFloat("0xA") //0 only uses decimal system
parseFloat("") //NaN
parseFloat("cindy"); //NaN
parseFloat("123cindy") //123.123
parseFloat("4.89e7"); //48900000