前言
关于变量的坑,值引用和地址引用。当初没有用心看,这次遇到问题了才解决。那么我在这里mark一下,防止以后忘记了还会出现这种情况。
值引用和地址引用
关于这两种方式,因为在最初步学习基础的时候不是很清楚就跳过了,可能是缺乏动手练习吧。等遇到这种问题才明白。根据我的结论得出以下
- 【值引用】这个就是将一个变量的值拿来过放到另外一个新的地址中,他们不是同一个地址,所以更改的时候不会影响之前的变量。像字符串、数字这种就是值引用。
- 【地址引用】这个就是相当于把这个变量拿过来,新的变量地址跟原变量是一样的,所以修改了其他的都改了。就好比你把他儿子打了,他儿子要打你,他爸爸也要打你,他爷爷也要打你一样,因为他们是一家的。像数组、对象就会出现这种。
说的通俗易懂一点,值引用就是我们平常用变量一下,改这个不会改变原变量,而地址引用恰恰相反,一改全改。
如何解决地址引用?
那么如何解决呢?我起初的时候发现是引用的坑了,因为当时对这块不是很了解,百度怎么解决引用,发现的帖子也是很少,而且没效果。所以在此列举多种手段,万一不行请试试。
这里是考虑到的方案,没用过
- 遍历地址引用的变量,将值赋给新的变量。
- 如果不是很复杂的数据结构,JSON请使用parse、stringify将最初的变量进行转换,转为字符串在赋给新变量。Array则使用join、split分解在合并,或者克隆。
这里是用到过的方案
- 将变量放在一个函数中,return出去,用新变量接受。相当于做个一个get函数。