JS闭包

SHEIN

是什么

闭包就是一个函数及其词法环境的组合(或者说及其捆绑的周边环境状态的引用的组合)

能干什么

闭包可以让你在一个内层函数中访问到其外层函数的作用域

为什么会产生闭包

内部函数存在对外部函数局部变量的引用就会导致闭包

Example

function useCount() {
let counter = 0;
function add() {
counter++;
}
function reduce() {
counter--;
}
return {
add,
reduce,
get count() {
return counter;
}
};
}
const counter = useCount();
const { add, reduce } = counter;
console.log(counter.count); // 0
add();
add();
console.log(counter.count); // 2

当我们执行add()的时候,虽然已经不在useCount这个函数内,但add仍然能访问到useCount内部的counter,这就是闭包。

评论加载中 (ง •̀ω•́)ง