关于堆内存和栈内存释放

js 中的内存分为堆内存和 栈内存

堆内存:存储引用类型值 (对象:键值对 函数:代码字符串)

栈内存:

提供JS代码执行的环境和存储基本类型值 堆内存释放 让所有引用堆内存空间地址的变量赋值给Null 即可 (没有变量占用这个堆内存了 浏览器会在空间的时候把它释放掉) 栈内存释放 一般情况下,当函数执行完成,所形成的私有作用域(栈内存)都会自动释放掉 (在栈内存中存储的值也都会被释放掉,但是也有特殊不销毁的情况)

1.函数执行完成,当前形成的栈内存中,某些内容被栈内存以外的变量占用了,此时栈内存不能释放(一旦释放外面就找不到原有内容了)

2. 全局栈内存只有在页面关闭的时候 才会被释放掉 如果当前栈内存没有被释放,那么之前在栈内存中存储的基本值也不会被释放,能够一只保存下来。

播插一个小知识点


    var  f= fn(2);//=>先把FN执行(传递实参2),把FN执行的返回结果(return后面的值) 赋值F
    f();//把返回的结果执行
    fn(2)();//和上面两步骤类似,都是先把FN执行,把FN执行的返回结果再次执行




    //在和其它值进行运算的时候有一些区别
    i++;//自身累加1   (先拿原有值进行运算,运算结束后,本身累加1)
    ++i;//自身累加1  (先自身累加1,拿累加后的结果进行运算)
    var k =1;
 console.log(5 + k++, k);//  6,2
    k=1
console.log(5 + (++k), k);//7 2

为理解堆内存和栈内存的释放看下题  以及图示思路 供大家参考。

  var i=1;
    function fn(i){
        return function (n) {
            console.log(n + (++i));
        }
    }
    var f=fn(2);
    f(3);
    fn(5)(6);
    fn(7)(8);
    f(4);

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值