# 造火箭
# js
# 1.第一题,连等问题
var a = {n:1}
var b = a
a.x = a = {n:2}
console.log(a.x)
console.log(b.x)
1
2
3
4
5
2
3
4
5
- 请问输出什么?
解析答案
首先答案是:undefined, {n:2}
概念:
连等开始之前程序会把所有引用都保存下来, 连等的过程中,这些值不变 等到整个连等都完事了,在一块变
执行过程:
第一行和第二行代码,a
和b
变量都是引用的一块内存地址,根据上面的概念,在连等的过程中,a.x
的赋值操作,其实是给刚才a
和b
变量内存值进行修改,而不是新的{n:2}
的内存地址,当整个连等操作完成了,a
就会执行{n:2}
的新内存地址,而b
还是指向了原来的内存地址,但是原来的内存地址已经变成了{n:1,x:{n:2}}
所以才会输出刚才的答案
# HTML
# css
← 《闭包》小记