我试图将一个数字传递给我的JavaScript函数,但实际上传递了一个错误的值.我在这里给出了完整的代码:
Test it!
在上面的代码中,如果我将其作为10040传递,而不是01004,我将在警告框中获取正确的值.
对这个奇怪的案子有什么看法?
提前致谢.
以零开头的数字文字被解释为八进制,因此写入01004 与写入516 完全相同.
其他一些答案建议在函数内部使用parseInt将八进制值转换为十进制.
这不会有帮助,因为数值516被传递给函数.如果你要求parseInt给你一个基础10解释,你会得到516!
修复此问题的方法是要么丢失前导零,要么如果需要零,则使其成为字符串文字而不是数字,并在函数内使用parseInt(num,10).
领先的零可能使它认为数字是八进制的.
更新:感谢@Paul Dixon今天早上慢慢醒来.01004
是一个文字,所以没有任何事后解析,即,parseInt
将更新数字的基础.您需要0
在代码中删除前导1004
(最简单的解决方案),或者在文本周围加上引号以使其成为字符串,然后再发送它parseInt
(这是我无法理解的更多工作).