1. 第一道

js
var a = {"x": 1}; var b = a; a.x = 2; console.log(b.x); a = {"x": 3}; console.log(b.x); a.x = 4; console.log(b.x);

答案放在了下面,思考一下哦~

原理:

  1. 首先:第一个 log 打印 2 大家应该都没问题 image.png

  2. 然后 a 指向了栈内存中的另一块地址,而 b 没变,所以 b.x 仍然为 2

image.png

  1. 接着修改 a.x = 4 ,因为此时 b 仍然指向之前的地址,所以修改 a.x 并不会去影响 b,所以打印仍然为 2

image.png

答案:2 2 2

2. 第二道:

js
var a = {n:1}; var b = a; a.x = a = {n:2}; console.log(a.x); console.log(b.x);

答案在下面思考下哦~

这次我尝试一张图解释:

image.png

答案: undefined {n: 2}

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:叶继伟

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!