try 在JavaScript中执行以下操作:
parseInt('01'); //equals 1
parseInt('02'); //equals 2
parseInt('03'); //equals 3
parseInt('04'); //equals 4
parseInt('05'); //equals 5
parseInt('06'); //equals 6
parseInt('07'); //equals 7
parseInt('08'); //equals 0 !!
parseInt('09'); //equals 0 !!
我刚刚学到了JavaScript认为前导零表示octal integer的艰难方法,因为base-8中没有"8"
或"9"
,所以函数返回零.不管你喜不喜欢,this is by design.
解决办法是什么?
Note: For sake of completeness, I'm about to post a solution, but it's a solution that I hate, so please post other/better answers.个
Update:个
JavaScript标准的第五版(ECMA-262)引入了一个突破性的改变,消除了这种行为.Mozilla有很好的write-up.