闭包是指有权访问另一个函数作用域中变量的函数,也就是一个作用域可以访问另一个函数内的局部变量。闭包也是一个函数。
<script>
// fun函数作用域访问了fn函数里的局部变量num 此时就产生了闭包
// 此时的fn就是一个闭包函数
function fn(){
var num = 10;
function fun(){
console.log(num);
}
fun();
}
fn();
</script>
闭包的作用:延伸了变量的作用范围
本来fn里的局部变量num只能在fn函数里使用,现在在外面的作用域也可以访问到
<script>
// 在fn外面的作用域也可以访问fn内的局部变量
function fn(){
var num = 10;
function fun(){
console.log(num);
}
return fun;
}
// 此步骤相当于 var f = function fun(){console.log(num)}
var f = fn();
</script>