簡體   English   中英

將此參數和第二個參數傳遞給回調函數

[英]pass this and second parameter to callback function

我有一個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作為全局變量。

您無需將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] })); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM