什么是闭包
- 浅显的从用法上理解
- 既重用变量又保护变量不会被污染的一种编程方法。
- 今后:只要希望给一个函数,保存一个即可反复使用,又不会被外界污染的专属局部变量时,就用闭包
如何使用闭包:3步
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var total=1000;
//第一步:用外层函数包裹要保护的变量和内层函数
function mother(){
var total=1000;
//第二步:返回内层函数对象
return function pay(money){
total-=money;
console.log(`花了${money}还剩${total}元`);
}
}
//第三步:调用外层函数,用变量接住内层对象
var pay=mother();
//pay接住的就是mother()返回出来的内层函数对象
pay(100);//应该剩900
totoal=0;//别人程序执行了代码
pay(100);//应该剩下800
</script>
</head>
<body>
</body>
</html>


- 所以:使用闭包三步
- 可以为函数保存一个
- 既可重用,又不会被污染的
- 专属局部变量
- 小问题
- 内层函数,将来迟早要被别的变量接住所以,起步不起名,结果一样的!
- 那干脆我们就不起内层函数名了!
- 将来谁接住内层函数,谁负责起名。就像周星驰进入华府,被改名
- 什么时候用闭包
- 我想给一个函数保存专属变量,这个变量既可以反复使用,又不受外部影响就用闭包