这是我踩过的大坑,印象很深,希望大家以后绕过此坑。
引用变量(对象,数组这些玩意)是内存中的堆区,值变量(String,Number,Boolean这些玩意)是内存中的栈区。
什么是堆栈?不说抽象的,看的也累,举个例子:
栈就是你自己的东西,你想咋折腾都行
堆就是你借别人的东西用,弄坏了,别人会来干你,哈哈就这么理解吧~
比如 let a = 1; let b = a; b就是你自己的了,想干嘛干嘛,不影响a,因为数字是值变量
但是数组就不行了 ,let a = [1, 2, 3], let b = a, 但是这个b是别人的东西,不能乱来,不信你 b.push(4)试试,你发现a就变成[1,2,3,4]了,写完你就会发现地上多了一块舒肤佳。嘿嘿~~
当然也有解决办法,想让数组变成自己的,用slice()方法就可以了,let b = a.slice();就ok,b随便你玩,不怕身后一阵凉。
网友评论