js中,parseInt是一个将字符串转换为整数的函数。它在遇到非数字时停止解析。
如果该字符串第一个字符为0,那么该字符串将被基于八进制而不是十进制来求值。在八进制中,8和9不是数字,所以parseInt(“09”)和parseInt(“08”)产生0作为结果。这个错误导致了程序解析日期和时间时出现问题。幸运的是,parseInt可以接受一个基数作为参数,如此一来parseInt(“08”,10)结果为8.
——《javascript语言精粹》
经简单测试,在ie8和ie8之前的浏览器才会有这种情况,ie9,ff22,,chrome27下parseInt(“09”)产生的结果是9而不是0.不过还是建议始终提供这个基数参数。