1.闭包
1.1闭包的含义
- 一个普通的函数function,如果它可以访问外层作用于的自由变量,那么这个函数就是一个闭包;
- 从广义的角度来说:JavaScript中的函数都是闭包;
- 从狭义的角度来说:JavaScript中一个函数,如果访问了外层作用于的变量,那么它是一个闭包;
- 普通闭包
let a = 1;
const addNum = () => {
// JS中的一个函数如果访问了外层的一个变量就会形成闭包
a = a + 1;
console.log(a);
};
addNum();
addNum();
- 严格闭包
const test = () => {
let a = 1;
const addNum = () => {
a++;
console.log(a);
};
return addNum;
};
const add = test();
add(); // 2
add(); // 3