javaScript在实际开发中,堆栈的注意事项

今天我遇到了一个问题,当请求接口后得到一个数组,这个数组在后面会用于比较,但也会改变,所以这个数组同时赋值给两个变量,

本来想着当在其他方法中改变其中一个变量,

在后来可以将两个变量用于比较

但是我发现其中一个改变,另一个也跟着改变。

后来发现,javascript中引用类型存在堆中,基本类型存在栈中

进入页面请求一个数据res.data
this.a = res.data
this.b = res.data
在另一个方法中我对a重新赋值了
this.a = 新的数组
在另一个方法中我要用到a和b做比较
//当比较的时候我发现不对啊
//this.b跟着this.a发生了改变

解决办法:

将其中一个转成基本类型,当用到的时候在转回来

进入页面请求一个数据res.data
this.a = res.data
this.b = res.data.join()//数组转成字符串
在另一个方法中我对a重新赋值了
this.a = 1
在另一个方法中我要用到a和b做比较
console.log(this.a)
console.log(this.b)
this.b = this.b.split(",")//字符串转回数组,得到新的数组
这样this.b就不会跟着this.a的变化而变化了
原文地址:https://www.cnblogs.com/cqy1125/p/12674324.html