什么是栈:
计算机为原始数据类型开辟的一块的内存地址 string number ....
1 var a = "zp"; 2 var b = a; 3 b = "pz"; 4 console.log(a,b); // zp pz
理解: 存储a变量的时候为a 开辟一块栈空间,【 【a】】然后存储b 变量的时候又开辟了一块栈空间 【【a】【b】】,这时候 a 和 b 的值都为 “zp”, b = "pz",b 把值进行了更改为 “pz”,并不会影响到a 的值。
什么是堆:
计算机为引用数据类型开辟的一块内存地址 object
1 var c = {key: 1}; 2 var d = c; 3 d.key = 2; 4 console.log(c,d); // {key: 2} {key: 2}
理解:定义一个对象的时候,计算机并不知道你定义对象的大小,你对象上的值有多少,key value 值不确定,所以会先给你个地址值 c【“x0000018”】-> 指向一个堆 {key:1}堆里面可以随意设置值, d = c 的时候也会给其一个地址值 c d 【 “x0000018” , "x0000018"】-> {key: 1} 。当d.key = 2 改为2的时候 ,同样也把 c 地址指向的对象也改为 {key:2}