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

时间:2019-04-30 15:49:22

标签: javascript parseint

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

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

我想念什么?

1 个答案:

答案 0 :(得分:5)

这种情况:

if (m!=Number) {

将始终为真。 parseInt返回numberNumber是一个函数。 (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

如果您使用!==而不是!=,则将保证“永远为真”。