js 面试题 a.x = a = { n: 2 }


let a = { n: 1 }
a.x = a = { n: 2 }
console.log(a.x);
/**
 这道题打印undefined

 第一行
    开辟了堆内存o1, 存储{n:1}
 第二行
    a.x 指向后续的运算结果, 即此时o1.x  = undefined
    a = {n:2}, 即开辟了堆内存o2, 存储{n:2}, a指向o2
    a.x即o1.x = {n:1,x:{n:2}}
    a = {n:2}, 即o2 = {n:2}
    console.log(a,x) 即o2.x为undefined

    要点在于,a.x指向的是o1的内存,而a后续指向的是o2的内存, 打印时a的指向已经改变为o2
 */




posted @ 2022-02-03 11:36  IslandZzzz  阅读(97)  评论(0编辑  收藏  举报