JS闭包

js闭包跟this指向的理解。

js闭包可以读到函数内部的变量

变量的值可以一直保存在内存中

函数执行后,不会delete变量

为了让自己不忘记,下面记录2段code

var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
        return this.name;
      };
    }
  };
  alert(object.getNameFunc()());

这里会alert“The Window”

 var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      var that = this;
      return function(){
        return that.name;
      };
    }
  };
  alert(object.getNameFunc()());

这里会alert“My Object”

detail:
为什么第一个会弹出The Window,因为getNameFunc返回一个function 这里的function是全局的 不能访问到object里面的name,然而全局的name是the window。
第二个就是闭包的应用,返回的function中的that.name 回想上一级找that 然后依次找到object的name。
这也就是为什么闭包中 变量不会被删除。

但是闭包也有几点不好的地方,会消耗cpu,降低性能。

最后 object.getNameFunc()() => var a= object.getNameFunc() a()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我的期待 是一把遥控器 满足时兴奋 忽略时失落 都在你手里 你不必看 也无需按 我不乞求 也不会受伤 只希望你 看到
    楚生阅读 289评论 0 0
  • “就快要高考了啊,”穿着T恤的男生说,“感觉时间过得真快啊。” 他叫星,坐在他对面的是他的女朋友晴,5月初,气温上...
    徐湘楠阅读 756评论 1 3
  • 其实,一开始我本想把题目叫做《围城》,后来想想,估计会被钱钟书粉们给弄死,所以果断弃之~~ 然后题目叫“两座城池”...
    数据虫巢阅读 564评论 3 2