离了个大谱兄弟们
今天我在写音频可视化的时候发现一个让我非常震惊以及悲哀的事情,就是因为引用的问题让我出了很多我没法理解的bug
在这之前 我先说一下 这篇文章你可能看了可能觉得雀食我水平不怎么样,的确这些都是很基础的东西 但就是有人他真不知道;
var data = [1,2,3]
var data2 = data
以下的东西是在没有使用拷贝函数的情况下
打印的结果是这样的想必大家必定没有争议
假如我改变一下data的数据data[0]= 4
这个时候我们再去分别打印两个变量会发现得到的还是一样的
对于各位老鸟来说觉得这很正常吗 ,但是对于菜鸟来说
他可能会觉得data的数据不是赋值给data2 了嘛为什么改了data的值data2变了????
var data = {name:"zhangshan"}
var _data = data
var data2 = [1,2,3]
var _data2 = data2
var data3 = ()=>{ console.log("??");}
var _data3 = data3
//var data = {name:"zhangshan"}
//var _data = {name:"zhangshan"}
//如果是这样的 那他们之间就是不相互影响的 改变data的数据不会影响_data的数据 凡是 {name:"zhangshan"} 、 [1,2,3] 、()=>{ console.log("??");} 都是名花无主的 赋值就只是引用
在以上的几种情况我们直接用data1、data2、data3这几个都是引用、也就是说这几个都不是 = 后面的那一坨的本身 就好比我有一个游戏账号 ,游戏账号里面有很多装备(假如可以多人同时登陆)给张3用了 张3他是个人 他不是游戏账号 他只能用 还能修改游戏里面的数据 比如说是买卖装备 ,现在我又把我的账号给李四用了,同样的李四也是个人他不是游戏账号本身吧 张三买卖了装备后李四上号就是张三买卖过后的数据同样李四买卖后张三也能看得到改变后的。他们都是不是游戏账号本身 他们只是用一下游戏账号也可以做修改
今天这篇写的比较草率 是因为我发现我连这几本的东西都还没有明白 感觉很气 大家还有什么觉得很基础但是大家不知道的可以在评论区说一说 ε=(´ο`*)))唉 又是菜鸟的一天