闭包
闭包 : 该销毁的内容没有销毁
- 满足以下2个条件,才会形成闭包
- 1、函数A嵌套函数B、函数B引用了函数A的变量
- 2、函数B被外部引用
- 特点:1、延长变量的生命周期
- 2、变量私有化(不会污染全局变量)
- 缺点:占内存
全局变量能够通过闭包实现局部(私有)
例子1:
function xxx() {
let i = 1;
return function inner() { console.log(i++); }
}
let fun = xxx();
//调用函数
fun();//1
fun();//2
fun();//3
调用一次,自增一次
2.例子2 :
function foo() {
let name = “”;
let obj = {
say: function () {
if (name == “”) {
console.log(“input your name”);
} else {
console.log(my name is ${name}
);
}
},
createName: function (inputName) {
name = inputName;
}
}
return obj;
}
let xiaohai = foo();
xiaohai.say();//input your name
xiaohai.createName(“xiaohai”);
xiaohai.say();//my name is xiaohai