parseInt(08)和parseInt(09)
今天收到了一个bug,大致内容如下:
“
ダウンロード期限、回収期限を2日後の9時に設定すると
翌日の24時に変わってしまう。
?一覧表示は設定した値のまま
?詳細表示が変わってしまう
?8時と9時を指定したときだけ発生する
”
打开页面,搜了一下代码,感觉很是奇怪。真的只有8和9出现这种问题。
google了一下,问题出在 parseInt 方法
parseInt 方法
返回由字符串转换得到的整数。
parseInt(numString, [radix])
参数
numString
必选项。要转换为数字的字符串。
radix
可选项。在 2 和 36 之间的表示 numString 所保存数字的进制的值。如果没有提供,则前缀为 '0x' 的字符串被当作十六进制,前缀为 '0' 的字符串被当作八进制。所有其它字符串都被当作是十进制的。
说明
parseInt 方法返回与保存在 numString 中的数字值相等的整数。如果 numString 的前缀不能解释为整数,则返回 NaN(而不是数字)。
parseInt("abc") // 返回 NaN。
parseInt("12abc") // 返回 12。
可以用 isNaN 方法检测 NaN。
所以,当没有设置第二个参数的时候,就会出现错误。
这时,午夜场告诉我之前客户提了一个「コード検証」報告書(JavaScript)20091105版,其中就有提到关于“parseInt_miss_radix”一项。今天才知道是怎么回事。
有时间一定要把报告中的每一项都细细学习一下。