zoukankan      html  css  js  c++  java
  • 闭包函数(绑定函数)

    闭包定义:闭包(closure)是一个函数,通常也被成为闭包函数或绑定函数,该函数运行在一个特定的环境中,该环境中定义了一些本地的变量,当该函数被调用时,仍可以使用这些变量。

    特征:当一个函数不位于它所处环境(变量作用范围)中被调用时,仍能使用本地变量。

    (1)作为值从函数返回的函数是闭包函数。

    例如下面的代码:代码函数A()位于一个特定的环境中(被嵌套在另一个函数B()中),并作为值从函数B()返回。

    function B(){

    var temp = "abc"; // 这是一个本地变量

    function A(){        // 定义一个闭包函数,将使用本地变量

    alert("闭包函数处理本地变量temp的值:"+temp);

    }

    return A;             // 返回闭包函数

    }

    var myFunc = B();  // 调用函数B(),返回的是闭包函数A()

    myFunc();        // 调用闭包函数A()

     

    注意:myFunc()调用是在函数B()外面,按照常理,它不应该再访问到本地变量temp,但实际上仍可以访问,这就是闭包函数。

    (2)利用变量作用范围也可以形成闭包函数。

    一般来说,作为参数传递给函数的函数或作为值从函数返回的函数都是闭包函数,但是,利用变量作用范围也可以形成闭包函数。例如: 

    var A;

    function B(){

    var temp = "abc"; // 这是一个本地变量

    A = function(){        // 定义一个闭包函数,将使用本地变量

    alert("闭包函数处理本地变量temp的值:"+temp);

    }

    return A;             // 返回闭包函数

    }

    B();          // 调用函数B()为变量A赋值

    A();       //  调用闭包函数A()

     

    可以看到,闭包函数A()的调用虽不在函数B()的局部作用范围内,但仍可以使用函数B()中定义的私有变量temp,这就是闭包。

     

    闭包的核心是函数无论在哪里调用,仍可以访问它所处环境的变量,而这个变量在函数被调用的环境中是被其他程序访问不到的。

     

    匿名自执行函数是非常好的利用闭包原理来实现的功能应用,使用get和set存取器方法定义属性也是一个很好的闭包原理应用。

     

  • 相关阅读:
    强制表格内容不换行
    数组深度
    JDBC连接SQLService时报错误:“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接"
    Excel中神奇的vlookup函数之基础应用
    利用python进行泰坦尼克生存预测——数据探索分析
    pandas数据处理基础——基础加减乘除的运算规则
    pandas数据处理基础——筛选指定行或者指定列的数据
    python读取文本文件数据
    服务器硬件基础知识
    WordPress实现伪静态
  • 原文地址:https://www.cnblogs.com/chengmingxiaowu/p/7677058.html
Copyright © 2011-2022 走看看