关于局部变量自动删除引用的范围?直接设置null删除引用的范围?

关于局部变量自动删除引用的范围?直接设置null删除引用的范围?

function fn(argument) {
var xm = {}; // 1
var xh = {}; // 1
xm.wife = xh; // 2
xh.husband = xm; // 2
}
fn();
xm = null; // 1
xh = null; // 1

局部变量离开作用域,自动删除的引用没有包含它的属性的引用吗?直接设置xm=null,是不是全局变量及它的属性的所有引用都删除?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好 , 老师之前讲解的可能有点不清楚,给同学造成了困扰。视频中老师在函数调用后,手动设置xm = null, 是为了模拟函数调用后对xm的引用会被设置为null, 清除一次引用,但是之前xh指向的那个地址中husband属性还指向了xm之前指向的{}地址,所以还有一次引用没有解除。

同学可以结合视频中老师的讲解去理解, 语言讲解会比文字更加生动形象哦。

另,关于垃圾回收机制这里,同学可以先作为了解,帮助自己更好的去理解引用类型等的使用方式,等到自己的知识体系积累到一定程度,在回过头来深入研究其中的原理, 会更容易理解,也会帮助自己的能力哦

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~~


好帮手慕慕子 2019-07-24 09:41:31

同学你好,针对你的问题,解答如下

  1. 局部变量离开作用域,自动删除的引用没有包含它的属性的引用

  2. 直接设置xm=null, 可以理解为是将全局变量及它的属性的所有引用都删除

以xm为例, 局部变量离开作用域,自动删除了var xm={}的引用, 但是xh.hushband = xm属性值还引用了xm这个对象,导致xm被引用了两次,手动设置为null清除一次

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~~

  • 提问者 慕尼黑5122342 #1
    xm是局部变量,函数调用结束后,怎么给xm手动设置为null?
    2019-07-24 10:44:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师