JavaScript引用类型变量和值类型变量的坑

这是我踩过的大坑,印象很深,希望大家以后绕过此坑。

引用变量(对象,数组这些玩意)是内存中的堆区,值变量(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随便你玩,不怕身后一阵凉。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容