我有一个JSCS规则,用于标识for循环中的函数。我想要遵守规则vs关闭警告。这是JSCS错误状态中的代码。
let sum = 0;
for (var key in denomGroup) {
denomGroup[key].forEach(function (denom) {
sum = addToSum(sum, denom)
});
}
return sum;
我在下面尝试了这个并且addToSum
函数获取了对象,但是我无法弄清楚如何传递总和并让它迭代并继续添加其他值
for (var key in denomGroup) {
denomGroup[key].forEach(addToSum);
}
function addToSum(denom, sum) { //denom has object, sum is empty
return sum += denom.sum;
}
我也试过
for (var key in denomGroup) {
denomGroup[key].forEach(addToSum(sum));
}
function addToSum(sum, denom) { //sum has 0, denom is empty
return sum += denom.sum;
}
如何在第一个代码块的意图下正确调用外部函数?我需要避免将sum
作为全局变量放置。
答案 0 :(得分:2)
您不需要将sum
传递给函数,只需在声明sum
的范围内声明该函数:
let sum = 0;
let denomGroup = {
a: [1,2,3],
b: [4,5,6]
};
function addToSum(denom) {
return sum += denom;
}
for (var key in denomGroup) {
denomGroup[key].forEach(addToSum);
}
console.log(sum);
编辑:正如@ScottMarcus指出的那样,sum
变量不需要是全局的,只是在与函数定义相同(或更高)的范围内。例如,您可以将整个事件封装起来:
function countDenoms(denomGroup) {
let sum = 0;
function addToSum(denom) {
sum += denom;
}
for (var key in denomGroup) {
denomGroup[key].forEach(addToSum);
}
return sum
}
console.log(countDenoms({
a: [1, 2, 3],
b: [4, 5, 6]
}));