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()

你可能感兴趣的:(JS闭包)