我创建了变量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