我不断收到“未定义总和”错误

时间:2019-07-25 14:33:27

标签: javascript scope

我正在尝试编写此函数,该函数返回给定Number的所有数字的总和

我不断收到“未定义总和”错误,并且怀疑范围是问题所在...

function sumOfDigits(num) {
  // Write your code here!
  let numArr = num,
    output = [],
    sNumber = num.toString();

  for (let i = 0, len = sNumber.length; i < len; i++) {
    output.push(+sNumber.charAt(i));
  }

  for (let x = 0, sum = 0; x < output.length; sum += output[x++]);
  return sum;

}

我猜这是一个范围问题,因为我相信我已经定义了“ sum”

1 个答案:

答案 0 :(得分:2)

使用let(或const)时,变量的作用域为包含它的块。因此对于此代码:

for (let x = 0, sum = 0; x < output.length; sum += output[x++]);

...该块只是for循环。 for循环完成后,xsum都超出范围,无法访问。如果希望sum可以在更大范围内使用,请将其声明移到for循环之外,如下所示:

let sum = 0;
for (let x = 0; x < output.length; sum += output[x++]);
return sum;