什么是闭包

64 阅读1分钟

什么是闭包

  • 浅显的从用法上理解
  • 既重用变量又保护变量不会被污染的一种编程方法。
  • 今后:只要希望给一个函数,保存一个即可反复使用,又不会被外界污染的专属局部变量时,就用闭包

如何使用闭包: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>

image.png

image.png

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