我寫了一個for-loop,由於某種原因拒絕修改一個全局變量。相反,它似乎創建了一個臨時修改的局部變量。我的代碼的精簡版本如下。for循環沒有修改全局變量?
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」,其中包含一個整數作爲值。在全球範圍內還有許多「總目標」變量(這裏指定了兩個)。
有誰知道爲什麼全局變量(例如barcaTotalGoals)在通過此函數時未被修改?當我控制檯記錄這個循環的每一步時,數學正在發生,但結果沒有被存儲。我很抱歉,如果這之前已經問過,但我已經徹底搜查。
JavaScript是通過值。 'totalGoals'獲取'barcaTotalGoals'的值,但不會修改它。對「totalGoals」的修改不會改變「barcaTotalGoals」。 – Li357