为什么parseInt(str)不返回整数?

0 javascript parseint

我正在研究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。

我搜索过的任何东西都没有用(包括指定基数和各种其他选项)。在我尝试过的所有解决方案中,这是运行时最正确的解决方案,并且没有针对此问题的提示。

我想念什么?

T.J*_*der 5

这种情况:

if (m!=Number) {
Run Code Online (Sandbox Code Playgroud)

永远是真的。parseInt返回numberNumber是一个功能。(some number) != (some function)¹如果是类型检查,那将是,if (typeof m !== "number") 同样,parseInt总是返回一个数字。¹

但是,parseInt返回的数字可以是NaN(“非数字”)值,这意味着在字符串的开头parseInt找不到任何可解析的数字。您可以通过使用全局isNaN函数(或Number.isNaN)来检查它是否是。(您无法使用if (m === NaN),因为NaN它很奇怪并且不等于它本身。)


¹除非有人特别尝试通过覆盖valueOf函数以返回数字来使其为假:

如果您使用!==而不是,则将保证“将始终为真” !=