js闭包的定义与应用

 

  • 定义

  闭包是在另一个函数(称为父函数)中定义的函数,并且可以访问在父函数作用域中声明和定义的变量。

  闭包可以访问三个作用域中的变量

  1、在自己作用域中声明的变量

  2、在父函数中声明的变量

  3、在全局作用域中声明的变量

  
  var globalVar = "abc";
  //自调用的函数
  (function fatherFunction(fatPart){ //父函数fatherFunction作用域开始
    var fatVar = 'F'; //在父函数中声明的变量
    //自调用函数

    (function childrenFunction(chiPart){ //子函数children作用域开始
      var chiVar = 'C'; //在子函数中声明的变量
      console.log(
      "父函数参数:" + fatPart +
      "父函数中声明:" + fatVar +
      "子函数参数:" + chiPart +
      "子函数声明:" + "chiVar" +
      "全局声明:" + global;
      )
    })(5) //子函数作用域结束,将5作为参数
  })(7) //父函数作用域结束,将7作为参数


  //父函数参数:7
  //父函数中声明:F
  //子函数参数:5
  //子函数中声明:C
  //全局声明:abc

   childrenFunction 是在 fatherFunction 中定义的闭包,可以访问在 fatherFunction 作用域内声明和定义的变量。此外,闭包还可以访问在全局命名空间中声明的变量。

  • 应用

  编写一个可以实现如下操作的函数

  
  var biBao = F(6);
  biBao(10); //返回16
  biBao(20); //返回26

  可以创建一个闭包来存放传递给函数 F 的值。被返回的内部函数是在外部函数中创建的,内部函数就成了一个闭包,它可以访问外部函数中的变量。本例中变量 (父函数作用域中的变量) 是 number

  
  function F(number){
    return function(a){
      console.log(number + a);
    }
  }
  
  var biBao = F(6);
  biBao(10); //16
  biBao(20); //26

 

posted @ 2019-07-15 16:49  足迹#  阅读(2646)  评论(0编辑  收藏  举报