为什么 parseInt(str) 不返回整数?
Why Isn't parseInt(str) Returning an Integer?
我正在学习 freeCodeCamp 的 javascript 介绍。这是提示:在 convertToInteger 函数中使用 parseInt() 将输入字符串 str 转换为整数,然后 returns 它。
这是我现在拥有的。
function convertToInteger(str) {
var m = parseInt(str);
if (m!=Number) {
return NaN;
}
else {
return m;}
}
convertToInteger("56");
convertToInteger("56") 不是 return 56。它是 return 一个数字,而一串单词是 return NaN。
我搜索过的任何东西都不起作用(包括指定基数和各种其他选项)。在我尝试过的所有解决方案中,这个在 运行 时是最正确的,并且没有为该问题提供任何提示。
我错过了什么?
这个条件:
if (m!=Number) {
永远是真的。 parseInt
return 一个 number
。 Number
是一个函数。 (some number) != (some function)
将永远是真的。¹如果那是一个类型检查,它将是 if (typeof m !== "number")
但是 又是 parseInt
总是 return是一个数字。
数字 parseInt
returns 可以是 NaN
("not a number") 值,但是,这意味着 parseInt
找不到 any 字符串开头的可解析数字。您可以使用全局 isNaN
函数(或 Number.isNaN
)检查它是否存在。 (你 不能 用 if (m === NaN)
做,因为 NaN
很奇怪,不等于它自己。)
¹ 除非有人特别试图通过将函数上的 valueOf
覆盖为 return 数字来使其为假:
function foo() {
}
// Don't do this. :-)
foo.valueOf = function() {
return 42;
};
console.log(42 != foo); // false
console.log(42 == foo); // true
如果您使用 !==
而不是 !=
,则 "will always be true" 将得到保证。
我正在学习 freeCodeCamp 的 javascript 介绍。这是提示:在 convertToInteger 函数中使用 parseInt() 将输入字符串 str 转换为整数,然后 returns 它。
这是我现在拥有的。
function convertToInteger(str) {
var m = parseInt(str);
if (m!=Number) {
return NaN;
}
else {
return m;}
}
convertToInteger("56");
convertToInteger("56") 不是 return 56。它是 return 一个数字,而一串单词是 return NaN。
我搜索过的任何东西都不起作用(包括指定基数和各种其他选项)。在我尝试过的所有解决方案中,这个在 运行 时是最正确的,并且没有为该问题提供任何提示。
我错过了什么?
这个条件:
if (m!=Number) {
永远是真的。 parseInt
return 一个 number
。 Number
是一个函数。 (some number) != (some function)
将永远是真的。¹如果那是一个类型检查,它将是 if (typeof m !== "number")
但是 又是 parseInt
总是 return是一个数字。
数字 parseInt
returns 可以是 NaN
("not a number") 值,但是,这意味着 parseInt
找不到 any 字符串开头的可解析数字。您可以使用全局 isNaN
函数(或 Number.isNaN
)检查它是否存在。 (你 不能 用 if (m === NaN)
做,因为 NaN
很奇怪,不等于它自己。)
¹ 除非有人特别试图通过将函数上的 valueOf
覆盖为 return 数字来使其为假:
function foo() {
}
// Don't do this. :-)
foo.valueOf = function() {
return 42;
};
console.log(42 != foo); // false
console.log(42 == foo); // true
如果您使用 !==
而不是 !=
,则 "will always be true" 将得到保证。