我正在研究freeCodeCamp的javascript简介。这是提示:在convertToInteger函数中使用parseInt(),以便将输入字符串str转换为整数,然后将其返回。
这就是我现在所拥有的。
function convertToInteger(str) {
var m = parseInt(str);
if (m!=Number) {
return NaN;
}
else {
return m;}
}
convertToInteger("56");
Run Code Online (Sandbox Code Playgroud)
convertToInteger(“ 56”)不返回56。它确实返回一个数字,并且一个字符串也不返回NaN。
我搜索过的任何东西都没有用(包括指定基数和各种其他选项)。在我尝试过的所有解决方案中,这是运行时最正确的解决方案,并且没有针对此问题的提示。
我想念什么?
这种情况:
if (m!=Number) {
Run Code Online (Sandbox Code Playgroud)
永远是真的。parseInt返回number。Number是一个功能。(some number) != (some function)¹如果是类型检查,那将是,if (typeof m !== "number") 但同样,parseInt总是返回一个数字。¹
但是,parseInt返回的数字可以是NaN(“非数字”)值,这意味着在字符串的开头parseInt找不到任何可解析的数字。您可以通过使用全局isNaN函数(或Number.isNaN)来检查它是否是。(您无法使用if (m === NaN),因为NaN它很奇怪并且不等于它本身。)
¹除非有人特别尝试通过覆盖valueOf函数以返回数字来使其为假:
if (m!=Number) {
Run Code Online (Sandbox Code Playgroud)
如果您使用!==而不是,则将保证“将始终为真” !=。
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |