关于闭包你了解多少

首先要明白闭包的存在是干什么用的,他就是用来解决变量的全局污染问题,当你给一个函数定义一个专属的且可以复用的变量,只有函数自己可以用,别人不可以用时,就用闭包!

闭包三步走

  1. 用外层函数包裹要保护的变量和使用变量的内层函数
  2. 在外层函数内部,返回内层函数对象。
  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>
</head>
<body>
    <script>
        function mother(){
            var total=1000;
              return function (money){
                total-=money;
                console.log(`还剩余${total}`);               
            }
        }
         var pay=mother();
        //  用变量接住返回的内层函数对象
        pay(100);
    </script>
</body>
</html>

其次还有一种写法,就是用匿名函数来写,然后在自调用,

<!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>
</head>
<body>
    <script>
  (function () {
  // JS引擎非常现实:  只有有用的东西 才会保存下来, 否则会统统删除
  //所以要想使它存活下来,就必须要想办法使用它
  var name = "我想要存活下来,便于后面函数调用发挥作用";
  function show() {
    console.log(name);
  }
  // window一直存活, 把show保存给window, show就能活下来
  // show函数中 使用了name 变量,  name有用, 就会活下来
  window.show = show;
  // 不保存到window 就无法调用show
  // 在调用 window 中的内容
})();
//var 一般声明的变量就保存在window中,所以可以直接将函数的返回值赋给一个变量,
 var show =(function () {
  var name = "我想要存活下来,便于后面函数调用发挥作用";
  return function show() {
    console.log(name);
  } 
})();
show();
show();
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端深造中

老板别忘了支持哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值