什么是闭包
- 它是一个能够引用其内部作用域变量(在本作用域第一次声明的变量)的表达式,这个表达式可以赋值给某个变量,可以作为参数传递给函数,也可以作为一个函数返回值返回
- 闭包是函数开始执行时候被分配的一个栈,在函数结束返回后仍不会被释放
闭包的应用
//在下面这个闭包函数里边,表达式作为函数返回值,在执行这个函数过程中,变量永远保存在函数people中
const people = (num) => {
var num = num;
return {
increase: () =>{
num++
},
get: () => {
return num;
}
}
}
var obj = people(1);
console.log(obj)
obj.increase();
obj.increase();
console.log(obj.get())//3
//下面这个函数每隔1S输出一次
for(var i=0;i<5;i++){ // 5
//隔1S输出一次
(function(n){
setTimeout(function(){
console.log(n);
console.log('--');
},1000*n)
})(i)
}