2014年10月21日 星期二

已成為傳說的parseInt('08')

 曾經有個client的功能需要將user的閱讀秒數記錄下來回存到DB中,但奇怪的是QA總是發出BUG,描述是累積秒數有時正確有時不正確原因不明。

 經過仔細的trace才發現原來parseInt這個方法其第二個參數(radix)是用來定義進位方式規則。才明白parseInt預設是8進位,所以當有字串例如:

parseInt('08') 便會轉換為0

需要寫成 parseInt('08',10) 結果才會是8。

 但這個問題在較新的browser已經不會再出現了,在ECMAScript 5之後parserInt預設值已改為10進位了。

沒有留言:

張貼留言