问答

test函数执行完为什么num变量没有被释放, setInterval中的num为

作者:admin 2021-09-30 我要评论

function test() { let num = 123; setInterval(function () { console.log(num); }, 1000); console.log('over'); } test(); console.log('over again'); 我原...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
function test() {  
    let num = 123;  
  setInterval(function () {  
        console.log(num);  
  }, 1000);  
  console.log('over');  
}  
  
test();  
console.log('over again');

我原以为输出over和over again后,会每隔一秒输出一个undefined, 实际上却输出123 ?

###

学习一下闭包吧,很明显的一个闭包。

###

因为setInterval里用到这个num了,所以它并不会被释放。

###

let语句声明是一个块级作用域的本地变量。
因为你用到num了,所以JavaScript就不会把这个变量释放啊。

###

又搜了一下闭包别人写到闭包 https://zhuanlan.zhihu.com/p/...
看来,确实是我对闭包的理解有偏差

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • test函数执行完为什么num变量没有被释

    test函数执行完为什么num变量没有被释

  • 两个对象中都含有键名相同的数组,如何

    两个对象中都含有键名相同的数组,如何

  • java虚拟机在解析阶段是怎么将字符引用

    java虚拟机在解析阶段是怎么将字符引用

  • 境外服务器只能通过http访问,https访

    境外服务器只能通过http访问,https访

腾讯云代理商
海外云服务器