js闭包的简单理解

闭包与函数有着紧密的关系,它是函数的代码在运行过程中的一个动态环境,是一个运行期的、动态的概念。


所谓闭包,是指词法表示包括不必计算的变量的函数。也就是说,该函数能够使用函数外定义的变量.。


在程序语言中,所谓闭包,是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落。这些外部执行域的非持久型变量神奇地保留他们在闭包最初定义(或创建)时的值。

var a = 'xiao A';
      var obj = {
        a : 'xiao B',
        getName : function(){
          return function(){
            return this.a;
          }
        }
      }
      console.log(obj.getName()());


      //闭包的基本用法
      var name = 'xiao A';
      var obj = {
        name : 'xiao B',
        getName : function(){
          //this总是指向调用者
          var o = this;
          return function(){
            return o.name;
          }
        }
      }
      console.log(obj.getName()());
      

      //闭包最简单的理解就是:一个函数,可以访问另外一个函数的作用域
      //封闭性:类似于java private起到一个保护作用
      function f(x){
        var temp = x; //局部变量,temp已经没有被使用
        return function(x){
          temp += x;  //又被调用
          console.log(temp);
        }
      }
      var a = f(10);
      a(5);
      a(10);
      a(20);


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值