使用parseInt()进行数字转换
你可以使用parseInt()
将字符串转换为数字。函数的第二个参数是进制参数,这个参数应该被指定,但却通常被省略。当字符串以0为前缀时转换就会出问题,例如,在表单中输入日期的一个字段。ECMAScript3中以0为前缀的字符串会被当作八进制数处理,这一点在ES5中已经有了改变。为了避免转换类型不一致而导致的意外结果,应当总是指定第二个参数:
var month = "06",
year = "09";
month = parseInt(month, 10);
year = parseInt(year, 10);
在这个例子中,如果省略掉parseInt的第二个参数,比如parseInt(year)
,返回的值是0,因为“09”被认为是八进制数(等价于parseInt(year,8)
),但09是非法的八进制数。
字符串转换为数字还有两种方法:
+"08" // 结果为8
Number("08") // 结果为8
这两种方法要比parseInt()
更快一些,因为顾名思义parseInt()
是一种“解析”而不是简单的“转换”。但当你期望将“08 hello”这类字符串转换为数字,则必须使用parseInt()
,其他方法都会返回NaN。