【问题标题】:Why does my function for multiples returns NaN? [duplicate]为什么我的倍数函数返回 NaN? [复制]
【发布时间】:2021-02-28 01:35:56
【问题描述】:

我希望我的函数将给定数字的所有 3 和 5 倍数相加。我的代码

function solution(number) {
  const multiples = [3, 5];
  let result;

  for (let i = 0; i < number; i++) {
    if (i % multiples[0] === 0 || i % multiples[1] === 0) {
      result += i;
    }
  }
  return result;
}
console.log(solution(49));

得到

NaN

我的函数范围有什么问题?

【问题讨论】:

  • 代码在循环中将一些数字添加到result,但它的初始值是多少?
  • 输入这个问题:30 多秒。使用调试器寻找答案:~20 秒。我不明白。

标签: javascript


【解决方案1】:

因为result的初始值为undefined

你可以这样做:let result = 0;

function solution(number) {
  const multiples = [3, 5];
  let result = 0;

  for (let i = 0; i < number; i++) {
    if (i % multiples[0] === 0 || i % multiples[1] === 0) {
      result += i;
    }
  }
  return result;
}
console.log(solution(49));

【讨论】:

    【解决方案2】:

    result初始化为0。默认为undefined

    所以你的

    result += i 最终成为(第一次)

    result = undefined + iNaN 以及后续的添加,它只是一堆 NaN + i 操作,再次等同于 NaN

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 2021-06-28
      • 2019-05-21
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多