关于闭包

我对闭包的理解

闭包是JS中比较难懂并且比较重要的一个学习模块,闭包是指能够访问另一条作用域中变量的函数。比如如下的闭包的案例:

function f1(){
   var a=1;
   function f2(){
         var b=2;
         return b;
         }
   }
 f1();
 alert(f2());

在这个例子中,console的结果是f2 is undefined.是因为我们想要调用b的值,b是属于函数f2的内部函数的变量,外部函数是无法访问内部函数的变量的。这个时候我们就要用闭包,形成如下案例:

function f1(){
   var a=1;
   function f2(){
         var b=2;
         return b;
         }
       return f2();
   }
 var n=f1();
 alert(n());

这样就可以成功的将函数f2中变量b的值传递给外部函数。这样工作的原理是将f2的整个函数返回给n然后在alert出函数n。

我这里讲一个故事:已知在厨房里有一锅肉,已知肉不能直接被拿出厨房,那我们该如何将肉拿到餐厅里呢?肉不能被带出餐厅,但是盘子可以,如果我们将肉装进盘子里,就可以连带盘子直接从厨房运送到餐厅,这样的解释大概也就说明了闭包在JS中的作用原理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值