简单来说,闭包就是指有权访问另一个函数作用域中的变量的函数。创建闭包最常见方式,就是在一个函数内部创建或返回另一个函数。 比如:
var a = function () {
var test = {};
setTimeout(function () {
console.log(test);
}, 1000);
}
上面的例子中,test在a中定义,但在setTimeout的参数(函数)中对它保持了引用。当a被执行了,尽管a已经执行完(已经执行完),理论上来说a这个函数执行过程中产生的变量、对象都可以被销毁。但test由于被引用,所以不能随这个函数执行结束而被销毁,直到定时器里的函数被执行掉。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。