javascript - js 函数的一点小问题求解
本文介绍了javascript - js 函数的一点小问题求解的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
js的函数名既然是函数对象的一个指针,那么是引用的是内存吗?
`
var a=function(c){
return ++c;
}
console.log(a(1));
var b=a;
console.log(b(1));
var a=null;
console.log(b);
console.log(b(1));
` ,那么如何做手动销毁呢?全局变量是不是需要关闭浏览器才会回收?求解谢谢
解决方案
首先var a
会在stack
里面开一块空间,然后你将他赋给一个function
,是一个引用类型,于是又在heap
里面又申请一块空间存放function
,此时,stack
里面的a
存放的是function
的地址
而下面,将b
赋值给a
,是将stack
里面a
指向的heap
里面function
的地址赋给b
,所以这就是为什么后来a
指向了null
,但是b
仍然指向之前heap
里面function
的原因。
如何销毁?将b
也设置为null
或者其他值就好了。所以这种变量尽量不要写全局的,写局部变量。
这篇关于javascript - js 函数的一点小问题求解的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文