闭包
闭包是指有权访问另一个函数作用域中变量的函数。
关键在于两点:
1.可以访问另一个函数作用域中的变量
2.是一个函数
闭包有三个特点:
1.闭包可以访问当前函数以外的变量
function fn(){
var num = "1";
function getOutNum(str){
console.log(str + num); //访问外部的num
}
return getOutNum('数字:'); //"数字是:1"
}
fn();
2.即使外部函数已经返回,闭包仍能访问外部函数定义的变量
function fn(){
var num = '1';
function getOutNum(str){
console.log(str + num); //访问外部的num
}
return getOutNum; //外部函数返回
}
var today = fn();
fn('数字是:'); //"数字是:1"
fn('数字不是是:'); //"数字不是:1"
3.闭包可以更新外部变量的值
function fn(){
var num = 0;
function getOutNum(val){
num = val;
console.log(num);
}
return getCount; //外部函数返回
}
var count = fn();
count(2); //2
count(3); //3