zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    node基础(2)
    node基础知识(1)
    面试题1
    HTML5中的表单属性
    H5中元素的拖放
    Niagara基于javascript的控件开发
    CSS居中
    2018-3-21 url 、href、src
    2018-3-7 色彩的一些知识
    JS基本数据类型
  • 原文地址:https://www.cnblogs.com/baby-zuji/p/11189350.html
Copyright © 2011-2022 走看看