【发布时间】:2021-12-05 08:43:18
【问题描述】:
我看过一篇关于JavaScript parseInt的文章,里面有这个问题:
parseInt(0.5); // => 0
parseInt(0.05); // => 0
parseInt(0.005); // => 0
parseInt(0.0005); // => 0
parseInt(0.00005); // => 0
parseInt(0.000005); // => 0
parseInt(0.0000005); // => 5
为什么会这样?
【问题讨论】:
-
这个问题和答案中的某处可能应该是措辞强硬的建议,而不是
parseInt(x),因为x不是字符串。如果您已经有一个号码,大概您想要Math.round()或Math.floor()或其他东西。这里的例子表明,你经常得到看起来合理的输出本质上只是运气。 -
虽然 ESLint 没有抱怨,但至少 PhpStorm(这对 JavaScript 和 TypeScript 也很有用)警告说一个数字不能作为字符串参数分配)。
-
这是不检查输入值类型的常见谬误示例。这里介绍了这个和其他隐式字符串转换的例子 - alex-klaus.com/javascript-wat
标签: javascript node.js typescript type-conversion parseint