我創建了變量bpJson,並不理解它爲什麼會改變。我每5秒鐘都會對控制檯進行日誌記錄,並且每次迭代都會更改一次。我只希望babyPieData改變,而bpJson每次都保持不變。 setPieOptions中沒有bpJson,所以我沒有包含該函數的代碼。爲什麼我的變量的副本被意外更改?
var createVariance = function(bpJson, babyPieData){
var n = bpJson.length;
for (var i = 0; i < n; i++){
var amount = Math.floor(Math.random() * 4);
var operator = Math.floor(Math.random() *2) + 1;
if (operator === 1){
babyPieData[i] = (bpJson[i] + amount);
if (babyPieData[i] > 100){
babyPieData[i] = 100;
}
}else{
babyPieData[i] = (bpJson[i] - amount);
if (babyPieData[i] < 0){
babyPieData[i] = 1;
}
}
setPieOptions(babyPieData);
}
};
var getBabyPieData = function(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'php/baby-pie.php');
xhr.send();
xhr.onload = function(){
var babyPieData = JSON.parse(xhr.response);
console.log('original babyPieData = ' + babyPieData);
var bpJson = babyPieData;
setPieOptions(babyPieData);
var babyPieDataTimer = window.setInterval(function(){
createVariance(bpJson, babyPieData);
console.log(bpJson);
}, 5000);
};
}();
偏離主題,因爲「爲什麼不是這個代碼工作。」 – bhspencer
@bhspencer ??那是什麼意思?這是關於某些代碼的問題,並且代碼已發佈。 – Pointy
關閉一個問題的原因之一是「尋求調試幫助的問題(」爲什麼這個代碼不工作?「)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建最小,完整和可驗證示例。' – bhspencer