阿里的面试题-连续赋值
Code
ts
var a = { n: 1 }
var b = a;
a.x = a = { n: 2 }
console.log(a.x)
console.log(b.x)
解析
ts
/**
* var a = { n: 1 } // 内存开辟空间addr1, 对应值val1 = {n : 1}, a = addr1
var b = a; // b = addr1
a.x = a = { n: 2 }
// 第一步 val1增加x变量
// 计算右边赋值,内存开辟空间addr2, 对应值val2 = {n : 2}, a = addr2
// 计算左边赋值,val1.x = {n: 2}
console.log(a.x) // a 指向 addr2,没有x变量,所以输出undefined
console.log(b.x) // b 指向 addr1,有x变量,所以输出{ n: 2 }
*/