let a = 10;
let b = a; // 赋值操作
b = 20;
console.log(a); // 10
分析:
a的值为一个基本类型,存储在栈中,将a的值赋给b,虽然两个变量的值相等,但是两个变量保存在两个不同的内存地址
基本类型赋值的过程:
var obj1 = {}
var obj2 = obj1;
obj2.name = "xxx";
console.log(obj1.name); // xxx
分析:
obj1是一个引用类型,在赋值操作过程汇总,实际是将堆内存对象在栈内存的引用地址复制了一份给了obj2,实际上他们共同指向了同一个堆内存对象,所以更改obj2会对obj1产生影响
引用类型赋值过程: