请问一下老师,视频中的循环引用案例,第一个 xm=null; 减少的是哪个 {} 的引用次数?为什么此时不是两个 {} 的引用次数都减一?这样在第二个 xh=null; 时再都减一,两个 {} 的引用次数就都为 0 了?
登陆购买课程后可参与讨论,去登陆吧
你好,对象是引用类型,变量在栈内存中,值在堆内存中,看下面图可能好理解一些:
xm和xn局部变量解除引用只是xm和xn不再指向堆内存中的值,但是在堆内存中还是在相互引用的。
自己再理解下。
你好,在练习中最后b=null,b本身没有引用,是b的arr属性进行引用了,所以将b置空之后,减少的次数是属性arr的引用。
而在视频中,xm以及xm中的wife属性都有引用,xm被置空之后,减少的只是xm的引用,属性wife的引用并没有减少。
自己再理解下,祝学习愉快!
你好,同学理解的可能有些问题,可以参考下面的解释:
xm和xn是fn函数中的局部变量,所以fn调用之后,xm和xn就解除了引用,也就是xm=null,和xn=null。
但是xm和xn对象中的wife和husband属性也引用了xh和xm,所以调用fn之后只解除了一次引用,并不能完全解除引用,这就是相互引用出现的问题。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。
37 3
22 4
78 1
80 1
56 1
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星