【发布时间】:2020-09-20 13:26:21
【问题描述】:
闭包可以访问外部函数、全局和内部函数范围。它是一个捆绑在一起的函数,并且能够返回一个函数。所以这是使用闭包构建的反例
function outerfunction() {
var y = 10;
return {
add() {
y = y + 1;
console.log(y)
},
sub() {
console.log(y)
y = y - 1;
},
value() {
return y;
}
}
}
const counter = outerfunction();
console.log(counter.value()); //10
counter.add(); //11
counter.add(); //12
console.log(counter.value()); //12
counter.sub(); //11
counter.sub(); //10
console.log(counter.value()); //10
这是反例的正常函数,即使在这个函数中也可以访问外部函数范围、全局范围和内部函数范围。那么区别是什么呢。这是下面的代码。
var counter = 10;
const add = () => {
console.log(counter);
counter++;
}
const sub = () => {
console.log(counter);
counter--;
}
console.log(counter); //10
add(); //11
add(); //12
console.log(counter); //12
sub(); //11
sub(); //10
console.log(counter); //10
如果我错了,请纠正。提前致谢
【问题讨论】:
-
第一个是隐藏
y变量以防止直接操作。
标签: javascript closures