
正文
简单认识 JavaScript 闭包
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
函数的闭包就是父函数嵌套子函数,子函数可以引用父函数的变量,而父函数不可以使用子函数的变量。
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。







