zoukankan      html  css  js  c++  java
  • 闭包(closure)

    • 闭包的定义:当创建函数时,函数和外部状态(变量)绑定就形成了闭包,所以每创建一个函数的同时会自动形成闭包。(这里的外部环境其实就是变量的作用域,如何判断作用域的范围,一般看包裹这个变量的{},如果没有{},那此变量就是全局变量了)
    let a = 20;
    function outer() {
      let a = 10
      function inner() {
        return a
      }
      return inner()
    }
    // 打印出的是函数outer内的变量a而不是外部变量a
    // 说明已经形成了闭包
    console.log(outer())

    我们知道创建函数以后都是自动形成闭包,也就是函数创建时就已经将函数外部的变量和函数内部的变量绑定在一起了,所以当你需要函数内部变量的值保持不变的时候就可以考虑在函数创建的同时,设置函数外部的变量,就如上面的例子,我希望inner函数内部的变量a不变,返回值永远是10,我们就可以在inner函数外部设置变量a为10,这样无论我们何时调用inner函数,返回的永远是10。

    • 闭包的应用:

    应用闭包无非是创建一个函数,而闭包的作用无非是创建函数时,将函数和此时的外部变量绑定在一起,这样不管我们什么时候调用函数,引用的变量都是创建函数时的外部变量。

    应用案例

    (如有不同的见解,欢迎指出)

  • 相关阅读:
    洛谷 题解 P5595 【【XR-4】歌唱比赛】
    洛谷 题解 CF1151D 【Stas and the Queue at the Buffet】
    洛谷 题解 CF299A 【Ksusha and Array】
    仙人掌找环
    2-SAT
    带花树
    帮我背单词
    csp2019退役祭
    P5284 [十二省联考2019]字符串问题 题解
    【网络流24题】魔术球问题
  • 原文地址:https://www.cnblogs.com/re-doc/p/14055797.html
Copyright © 2011-2022 走看看