“闭包是指有权访问另一个函数作用域中的变量的函数。”
——《JavaScript高级程序设计》
function foo() { // 闭包的另一种解释:带有数据的函数
var a = 'test';
function bar() {
console.log(a);
}
bar();
}
foo();
改造后(去掉控制台输出)
function foo() {
var a = 'test';
function bar() {
return a;
}
return bar;
}
var bar = foo();
bar(); // 可以通过foo访问到变量a
常见闭包,
例如:
function wait(message) {
setTimeout(function() {
console.log(message);
}, 1000);
}
wait('hello, closure');
(function() {
var doc = document;
var util = {
byId: function(id) {
return doc.getElementById(id);
};
};
window.jQuery = util;
})();
jQuery.byId('hh'); // jQuery代码组织方式
网友评论