JS引用传值问题

问题:在Vue页面中将C变量赋值给A、B,然后修改A值,发现B也给变了。

var c = [1,2,3,4];
var a = c;
var b = c;
a.pop();

console.log(a) //[1,2,3]
console.log(b) //[1,2,3]
console.log(c) //[1,2,3]

如上,此处传值是引用传递而不是值传递。那么,如何解决呢?

var c = [1,2,3,4];
var a = c;
var b = JSON.parse(JSON.stringify(c));
a.pop();

console.log(a) //[1,2,3]
console.log(b) //[1,2,3,4]
console.log(c) //[1,2,3]

如此,采用深克隆的方式把数值转换成字符串,然后再转换成对象。问题解决。修改a的值,b的值不变。

posted on 2020-09-18 23:12  dnddn  阅读(198)  评论(0编辑  收藏  举报

导航