闭包的概念:闭包是指有权访问另一个函数作用域中变量的函数
闭包的主要作用:延伸了变量的作用范围
例1:
function fn(){
var n = 1;
function fun(){
console.log(n)
}
fun(); `//此时fun函数内部可以访问到fn函数里面的局部变量`
}
也可以写成
function fn(){
var n = 1;
(function(){console.log(n)})();
}
或者
function fn(){
var n = 1;
(function(i){console.log(i)})(n);`// 这里n作为实参传给了形参i`
}
例2:
`//相当于 var f = function fun(){console.log(n)}`
f(); `//此时f函数在fn函数的作用域外部,但是却可以访问到fn函数内部的局部变量`
例3:(通过立即执行函数形成闭包)
for(var i = 0; i < btns.length; i++){
btns[i].onclick=(function(n){
return function fn(){
console.log(n)
}
})(i) `//此时i作为实参传给了形参n`
}
也可以写成
for (var i = 0; i < btns.length; i++) {
(function(n) {
btns[n].onclick = function() {
console.log(n)
}
})(i) `//此时i作为实参传给了形参n`
}