JS变量之间赋值,修改变量值,原变量会随之改变的问题
现象:
开发vue项目的过程中,需要多次用到一份基础数据,为减少代码量,提高一下复用效果,便用变量A来定义,在项目中需要用到时就用变量A进行赋值。
在项目中调用时,我新定义一个变量B,再将变量A赋值给变量B,即B=A;
期望的效果是,赋值之后,A和B是两份数据,对变量B进行操作时不影响变量A,结果发现想的是一回事,敲出来的完全是另一回事,修改B变量时A变量也跟着改变了。
原因:
请教了一下大佬,我们期待的是,B从A变量copy出一份数据,变成两份一样的基础数据,操作B而不影响A,让A始终保持原滋原味。但是B=A的方式只是将B指向A的存储地址,实际上只有同一份数据,因此无论修改A还是B都是会互相影响的。
解决方法:
B = JSON.parse(JSON.stringify(A))
先用SON.stringify(A)从A对象中解析出字符串,再用JSON.parse()将解析出的字符串转换成JSON对象,这样就会获得两份相同的数据啦,对B进行操作就不会影响到A啦
如果对你有帮助,记得给个赞噢(~~)