- 什么是闭包
**
- 使用场景
两大条件:
1.创建私有变量
2.延长私有变量的生命周期
应用一:改变页面元素的样式
<html>
<div id="color1">红色|黄色</div>
<button id="changecolor1">Red</button>
<button id="changecolor2">Yellow</button>
</html>
<script>
function changecolor(color){
return function(){
document.getElementById("color1").style.color = color;
}
}
var changecolor1 = changecolor('red');
var changecolor2 = changecolor('yellow');
document.getElementById('changecolor1').onclick = changecolor1 ;
document.getElementById('changecolor2').onclick = changecolor2 ;
</script>
应用二:模拟私有方法
var makeCounter = function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function() {
changeBy(1);
},
decrement: function() {
changeBy(-1);
},
value: function() {
return privateCounter;
}
}
};
var Counter1 = makeCounter();
var Counter2 = makeCounter();
console.log(Counter1.value());
Counter1.increment();
Counter1.increment();
console.log(Counter1.value());
Counter1.decrement();
console.log(Counter1.value());
console.log(Counter2.value());
**其他**
例如计数器、延迟调用、回调等闭包的应用,其核心思想还是创建私有变量和延长变量的生命周期