我正在研究freeCodeCamp的javascript简介。提示:在convertToInteger函数中使用parseInt(),它将输入字符串str转换为整数,然后将其返回。
这就是我现在所拥有的。
function convertToInteger(str) {
var m = parseInt(str);
if (m!=Number) {
return NaN;
}
else {
return m;}
}
convertToInteger("56");
convertToInteger(“ 56”)不返回56。它确实返回数字,并且一串字词确实返回NaN。
我搜索过的所有东西都没有用(包括指定基数和各种其他选项)。在我尝试过的所有解决方案中,这是运行时最正确的解决方案,并且没有针对该问题的提示。
我想念什么?
答案 0 :(得分:5)
这种情况:
if (m!=Number) {
将始终为真。 parseInt
返回number
。 Number
是一个函数。 (some number) != (some function)
必将是真实的。¹如果要进行类型检查,那将是if (typeof m !== "number")
但是,parseInt
总是返回数字。< / p>
返回的数字parseInt
可以是NaN
(“不是数字”)值,这意味着parseInt
找不到可解析的任何字符串开头的数字。您可以使用全局isNaN
函数(或Number.isNaN
)来检查是否存在。 (您不能使用if (m === NaN)
来完成此操作,因为NaN
很奇怪,不等于它本身。)
¹除非有人特别尝试通过覆盖函数上的valueOf
来返回数字:
function foo() {
}
// Don't do this. :-)
foo.valueOf = function() {
return 42;
};
console.log(42 != foo); // false
console.log(42 == foo); // true
如果您使用!==
而不是!=
,则将保证“永远为真”。