【发布时间】:2021-02-04 21:48:41
【问题描述】:
在这个 html/javascript 代码中,我想在每次 k 更改时(在第一个循环中)将 Q 重新分配给 A。 但是我也注意到了A的变化!! 那么我该如何解决这个问题呢?
- 为什么我只改变 Q 却改变了 A 的值??
- 如何防止 A 发生变化? 感谢您的回答
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var A=[[3,4],[5,7]];
var Q=[];
for (var k=0;k<2;k++){
Q= A;
for (var i=0;i<2;i++) {
Q[k][i]=1;
}
}
document.getElementById("demo").innerHTML = A;
</script>
</body>
</html>
【问题讨论】:
-
因为
Q = A不创建数组的副本,Q和A都引用同一个数组对象。 -
Q= A- 您将A的引用分配给Q,因此当您更改Q时,它更改了A -
当你将 A 赋值给 Q 时,你设置了对 A 的引用,这样两个变量就被赋值给了同一个数组,但是你需要像这样克隆数组
Q = [... A]; -
@Cristian
Q = [...A];不会工作 -
标签: javascript html css arrays loops