重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
函数的闭包就是父函数嵌套子函数,子函数可以引用父函数的变量,而父函数不可以使用子函数的变量。
成都创新互联专注于企业营销型网站建设、网站重做改版、张家口网站定制设计、自适应品牌网站建设、html5、购物商城网站建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为张家口等各大城市提供网站开发制作服务。
function outerFun() {
let a = 10;
return function (x) {
if (x) {
return (a = x);
} else {
return a;
}
};
}
let innerFun = outerFun();
let b = innerFun(10);
let c = innerFun(20);
let d = innerFun();
console.log(b, c, d); // => 10 20 20
第二个innerFun
修改父函数变量a
之后,第三个innerFun
直接获取结果,发现返回的是 20,说明返回的是上一次的结果。因此,函数闭包可以保存父函数的变量。
单个函数内定义的变量,使用之后就销毁,不保存函数的变量。
function fun(x) {
let a = 10;
if (x) {
return (a = x);
} else {
return a;
}
}
let b = fun(10);
let c = fun(20);
let d = fun();
console.log(b, c, d); // => 10 20 10
发现每一次使用都是新的变量,执行一次就释放,也不保存,重新执行就重新赋值变量a
。