JS闭包

作者: eleorc | 来源:发表于2018-04-01 11:53 被阅读0次

    参考文献
    阮一峰老师的这篇文章解释的很清楚。摘录要点如下。

    1 背景知识

    1.1 变量的作用域

    变量的作用域无非就是两种:全局变量和局部变量。
    Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。

    1.2 如何从外部读取局部变量

    在函数的内部,再定义一个函数

      function f1(){
    
        var n=999;
    
        function f2(){
          alert(n); 
        }
    
        return f2;
    
      }
    
      var result=f1();
    
      result(); // 999
    

    2 JS闭包概念

    闭包就是能够读取其他函数内部变量的函数

    3 闭包的用途

    • 读取函数内部的变量
    • 让这些变量的值始终保持在内存中
    • 暴露接口,隐藏实现

    代码举例

    闭包函数中关键字this的使用

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

    相关文章

      网友评论

        本文标题:JS闭包

        本文链接:https://www.haomeiwen.com/subject/givocftx.html