function a(){ return function b(){......}}
var a1=a();
var re=a1();
a1=null;//书上说,这里解除对匿名函数的引用,以便释放内存.但是在var re=a1();这一步,匿名函数执行完后,不是已经可以释放作用域链,a和b变量对象么?为什么还要最后置空呢??请指教!~谢谢~~
var a1=a();
var re=a1();
a1=null;//书上说,这里解除对匿名函数的引用,以便释放内存.但是在var re=a1();这一步,匿名函数执行完后,不是已经可以释放作用域链,a和b变量对象么?为什么还要最后置空呢??请指教!~谢谢~~
解决方案 »
- 动态绑定的asp.checkboxlist control client side 判断是否selected
- 这是一个文字向上滚动的例子,请问如何改成向下滚动?
- 动态设置iframe的src,目标中含有JQuery就会报错。XXX未定义。
- onclick调用带参JS函数问题
- IE contains 元素的问题? 高手一定要进来!
- 高分求助 :FireFox 调用 Iframe 函数 问题
- 如何做一个打开网页的.exe文件
- 如何通过按钮编辑name为变量的文本框的值
- 快疯了!IE6.00.2462真变态呀!我在本机做的测试,为什么不能禁止HTML缓存?
- 一段小程序,javascript想改为vbscript
- 页面刷新的问题
- 求教一个js的正则式
如果该推论正确,在后面再调用a1()试试,如果没有异常,a1 = null还是有必要的.
var a1=a();
var re=a1();
a1=null;//书上说,这里解除对匿名函数的引用,以便释放内存.这里a1存放的是函数b的句柄
re存放的是函数b执行完后返回的东西把a1清空就是把b的函数句柄清掉
当把a1设置成null之后,就没有对b函数的引用了,过一会,垃圾收集器会将没有被引用的b函数回收,同时a函数也没有必要为b保存执行环境了,所以被收集走了。内存就被释放了。
可能是这样吧