地址面试题
let a = {
name: '1' }
let b = a
a.x = a = {
name: '2' }
console.log(a.x) //undefined
console.log(b.x)//{ name: "2" }
分析
首先
a.x = a = {
name: '2' }
等于
a.x = {
name: "2" }
a = {
name: "2" };
所以
let a = {
name: '1' }
let b = a //复制a的内存地址 浅复制 a和b指向同一个内存地址
// a.x = a = { name: '2' }
//a和b指向同一个内存地址 a发生改变b也改变
a.x = {
name: "2" }
//a被重新赋值 a内存地址改变 a和b不再指向同一个地址
a = {
name: "2" };
console.log(a.x) //undefined a中没有x属性
console.log(b.x)//{name: "2"}