何らかの理由でグローバル変数の変更を拒否するfor-loopを書きました。代わりに、一時的に変更するローカル変数を作成するように見えます。私のコードを要約すると以下のようになります。for-loopはグローバル変数を変更しませんか?
var clubsArray = [obj, obj, obj];
//each obj contains a property of "goalsFor" which holds an integer
var madridTotalGoals = 0;
var barcaTotalGoals = 0;
function findTotalGoals(clubsArray, totalGoals) {
for(var i = 0; i < clubsArray.length; i++) {
totalGoals += clubsArray[i].goalsFor;
}
}
findTotalGoals(clubsArray, barcaTotalGoals);
// this loops properly and does the math, but it never changes the value of barcaTotalGoals
完全なコードには、「クラブ」オブジェクトを保持する多数の配列があります。それぞれは、値として整数を保持するプロパティーキー "goalsFor"を含んでいます。また、グローバルに宣言された多数のtotalGoals変数(ここでは2つの変数が指定されています)があります。
グローバル変数(barcaTotalGoalsなど)がこの関数に渡されたときに変更されない理由は誰にも分かりますか?このループの各ステップをログに記録すると、計算が実行されますが、結果は格納されません。私はこれが以前に尋ねられている場合は謝罪しますが、私は徹底的に調査しました。
JavaScriptは値渡しです。 'totalGoals'は' barcaTotalGoals'の値を取得しますが、それを変更しません。 'totalGoals'への変更は' barcaTotalGoals'を変更しません。 – Li357