闭包12.17
程序员文章站
2022-07-15 14:18:18
...
一、 闭包
闭包就是能够读取其他函数内部变量的函数(函数里面套函数,内部函数访问外部函数变量),在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
闭包中的变量会一直存储在内存中,类似全局变量
1.闭包的应用场景:
//点击li时,输出自身的位置
// var lis=document.querySelectorAll('ul li');
// for(var i=0;i<lis.length;i++){
// lis[i].οnclick=function(){
// console.log(i);//4
// };
// }
//i是一个全局变量 for循环执行完了之后i的值4
//点击li,执行事件函数,打印i,全局变量的i值为4
var lis = document.querySelectorAll('ul li');
for (var i = 0; i < lis.length; i++) {
(function (i) {//形参
lis[i].onclick = function () {
console.log(i);//0 1 2 3
};
})(i);//实参
}
</script>
//当点击事件执行时,打印i,打印是局部变量i,不再是全局变量i
2.闭包经典面试题
<script>
// var arr=[];
// for(var i=0;i<10;i++){
// arr.push(function(){
// console.log(i);
// })
// }
// arr[6]();//10
//问题的解决
var arr=[];
for(var i=0;i<10;i++){
arr.push(
(function(i){
return function(){
console.log(i);
}
})(i)
)
}
arr[6]();//6
arr[0]();//0
</script>