共计 613 个字符,预计需要花费 2 分钟才能阅读完成。
闭包就是指有权访问另一个函数作用域中的变量的函数
js 采用的是词法作用域,也就是函数可以访问的变量在函数定义时写在哪里就确定了和函数被调用的位置无关。 闭包就是函数不在定义的词法作用域内被调用,但是仍然可以访问词法作用域中定义的变量 。
闭包可以被用在三个地方:
// name 只能通过 getName 接口来访问
function Person(name) {
this.getName = function() {
return name;
}
}
function module() {
let inner = 1;
let increaseInner = function() {
inner++;
}
let decreaseInner = function() {
inner--;
}
let getInner = function() {
return inner;
}
return {
increaseInner,
decreaseInner,
getInner
}
}
let api = module();
console.log(api.getInner());
api.increaseInner();
console.log(api.getInner());
api.decreaseInner();
console.log(api.getInner());
for (var i = 0; i 5; i++) {
(function(i) {
setTimeout(function() {
console.log(i)
}, 1000);
})(i);
}
正文完