使用parseInt()进行数字转换

你可以使用parseInt()将字符串转换为数字。函数的第二个参数是进制参数,这个参数应该被指定,但却通常被省略。当字符串以0为前缀时转换就会出问题,例如,在表单中输入日期的一个字段。ECMAScript3中以0为前缀的字符串会被当作八进制数处理,这一点在ES5中已经有了改变。为了避免转换类型不一致而导致的意外结果,应当总是指定第二个参数:

  1. var month = "06",
  2. year = "09";
  3. month = parseInt(month, 10);
  4. year = parseInt(year, 10);

在这个例子中,如果省略掉parseInt的第二个参数,比如parseInt(year),返回的值是0,因为“09”被认为是八进制数(等价于parseInt(year,8)),但09是非法的八进制数。

字符串转换为数字还有两种方法:

  1. +"08" // 结果为8
  2. Number("08") // 结果为8

这两种方法要比parseInt()更快一些,因为顾名思义parseInt()是一种“解析”而不是简单的“转换”。但当你期望将“08 hello”这类字符串转换为数字,则必须使用parseInt(),其他方法都会返回NaN。