首页 > 解决方案 > 为什么在我的函数 parseInt 中没有从我传递给它的字符串中返回 0?

问题描述

parseInt当我在下面的函数中使用它时不返回 0:

    const getGuestsCount = guestsInput => {
  if (parseInt(guestsInput)) {

    return parseInt(guestsInput);
  }

  return 'not a number';
};

例如,getGuestsCount('0 we won\'t visit you!!'); 返回“不是数字”

但是如果我们parseInt在函数之外使用就可以了, parseInt('0 we won\'t visit you!!'); 按预期返回 0

标签: functionparseint

解决方案


由于parseInt('0 we won\'t visit you!!')计算结果为0,因此您的 IF 条件为负,因此函数返回not a number

也许你正在寻找if (!isNaN(parseInt(str)) { ... }

const getGuestsCount = guestsInput => {
  var guests = parseInt(guestsInput, 10);

  if (!isNaN(guests)) {
    return guests;
  }

  return NaN;
};

此外,在 JavaScript 中检查数字有点麻烦,您应该检查JavaScript 中 isNaN 和 Number.isNaN 之间的混淆以及其他建议的资源,以更好地理解问题。


推荐阅读