我正在尝试编写此函数,该函数返回给定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”
答案 0 :(得分:2)
使用let
(或const
)时,变量的作用域为包含它的块。因此对于此代码:
for (let x = 0, sum = 0; x < output.length; sum += output[x++]);
...该块只是for循环。 for循环完成后,x
和sum
都超出范围,无法访问。如果希望sum可以在更大范围内使用,请将其声明移到for循环之外,如下所示:
let sum = 0;
for (let x = 0; x < output.length; sum += output[x++]);
return sum;