javascript - 下面的这段代码为什么也是闭包?
巴扎黑
巴扎黑 2017-04-11 10:15:57
[JavaScript讨论组]

巴扎黑
巴扎黑

全部回复(2)
高洛峰

我翻译了一下:

function wait(message){
  return function timer(){
    console.log(message);
  };
}

var qy = wait("I'm qy");

qy()//控制台 I'm qy

补充:
这里我把timer返回了,外界变量qy就有了timer的引用;
原代码中的setTimeout(timer,1000);这样window其实会有timer的引用;

 //举个例子而已,不准确
    function setTimeout (callback){
        window.setTimeoutTasks.push(callback);
    }
PHP中文网

只要内部函数引用了外部函数的局部变量,都是闭包。当你外层的函数执行完毕后它所携带的局部变量本应该被销毁,但是由于内部函数的引用,这个变量将会常驻内存,只有浏览器关闭后才会销毁。这也就是闭包的意义,延长变量的生命周期

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号