【发布时间】:2013-07-14 22:43:27
【问题描述】:
我有以下代码给出标题中描述的警告:
year: parseInt(dateParts[0]),
......................^
非常感谢任何帮助
【问题讨论】:
标签: javascript jslint
我有以下代码给出标题中描述的警告:
year: parseInt(dateParts[0]),
......................^
非常感谢任何帮助
【问题讨论】:
标签: javascript jslint
见the manual for parseInt;它需要 2 个参数。第二个告诉它您要使用哪个数字基数。这几乎总是10(十进制)。
parseInt(dateParts[0],10)
如果不指定,则从数据中推断出来。
如果 radix 未定义或为 0(或不存在),JavaScript 假定如下:
如果输入字符串以“0x”或“0X”开头,基数为16 (十六进制)并解析字符串的其余部分。
如果输入字符串以“0”开头,则基数为八(八进制)或 10 (十进制)。确切选择哪个基数取决于实现。 ECMAScript 5 指定使用 10(十进制),但不是所有浏览器 支持这个。出于这个原因,使用时总是指定一个基数 parseInt.
如果输入字符串以任何其他值开头,则基数为 10 (十进制)。
在我写完以上内容几年后,情况发生了变化。现在:
函数 parseInt 的 ECMAScript 5 规范不再允许实现将以 0 字符开头的字符串视为八进制值。截至 2021 年,许多实现都采用了这种行为。
...但您仍然应该使用基数,至少对于浏览器端代码,因为并非所有实现都赶上了。
【讨论】: