扫码关注官方订阅号
我翻译了一下:
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中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我翻译了一下:
补充:
这里我把timer返回了,外界变量qy就有了timer的引用;
原代码中的setTimeout(timer,1000);这样window其实会有timer的引用;
只要内部函数引用了外部函数的局部变量,都是闭包。当你外层的函数执行完毕后它所携带的局部变量本应该被销毁,但是由于内部函数的引用,这个变量将会常驻内存,只有浏览器关闭后才会销毁。这也就是闭包的意义,延长变量的生命周期