1. 第一道
jsvar 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);
答案放在了下面,思考一下哦~
原理:
首先:第一个 log
打印 2
大家应该都没问题
然后 a
指向了栈内存中的另一块地址,而 b
没变,所以 b.x
仍然为 2
a.x = 4
,因为此时 b
仍然指向之前的地址,所以修改 a.x
并不会去影响 b
,所以打印仍然为 2
答案:2 2 2
2. 第二道:
jsvar a = {n:1};
var b = a;
a.x = a = {n:2};
console.log(a.x);
console.log(b.x);
答案在下面思考下哦~
这次我尝试一张图解释:
答案: undefined {n: 2}
本文作者:叶继伟
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!