zoukankan      html  css  js  c++  java
  • 关于闭包的总结

    函数作用链

    • 当在某个执行环境引用一个标示符时,会从内到外逐级向上搜索,并严格遵循就近一致原则;

    • 作用域可以使变量得到有效,有效的访问;

    • 当某个函数第一次被调用时,会创建一个作用域,并将此作用域赋给其一个内部属性[scope];

    • 后代的每个执行函数都有一个表示变量的对象的变量对象,全局变量对象始终存在,这也就是为什么我们可以随时访问全局变量;

    • 当创建demo()函数时,会创建一个先包含全局变量对象的作用链域,当此函数执行时,就有一个就是本身活动对象被创建,并将其推入作用链的最前端;

    • 作用链本质上是一个指向变量对象的指针列表,只是引用,而不是复制或者包含

    • 闭包的特点就是,外部函数执行完后,按理说就会被销毁,但是他不会,应为仍然有还在执行的内部函数在应用他,实际是外部函数的执行环境可以被销毁,但被内部应用的活动变量不会被销毁,仍然存在;

    • 闭包所保存的是整个变量对象,而不是某个特定变量;

    • 闭包就是内部函数保存着对外部函数的引用,外部函数只有当内部函数不访问了才会被销毁;换句话说,及时内部函数被放回了,但他仍然有权访问外部函数中的变量,因为他的作用链中保存着外部函数的作用域;

    • 作用亮的前端,始终时候当前执行代码所在环境的变量对象

      • 如果这个环境是函数,则其当前活动对象即为变量对象

      • 活动对象最开始只包含一个变量,即arguments对象

      • 下一个变量来自外部函数,再下一个是再外层函数,一直延续到全局作用域

    • 使用var声明的变量会自动被添加到最接近的环境中,如果没有var,就会自动被添加到全局环境中

    • 函数参数是按值传值的,而不是引用

    • 函数名实际就是对占整个函数总体的引用,函数名加个括号就表示函数执行,这个整个函数总体加个括号也表示函数执行效果一样;

    • 经典:实际包的作用就是为内部函数创建一个临时的全局变量函数,把内部函数要一直引用的变量放在外部函数中;外部函数就是为了存放内部函数要一直引用的变量;实际操作的函数是被返回的内部函数

    • 经典:避免了一定要把他放在全局作于域中

    • 经典:就像在当前环境中又定义一个函数一样;

  • 相关阅读:
    前后端分离
    分库分表之终极设计方案
    题解-CF1491
    题解-ARC113
    题解-CF578D LCS Again
    团队冲刺第二阶段5
    团队冲刺第二阶段4
    团队冲刺第二阶段3
    团队冲刺第二阶段2
    团队冲刺第二阶段1
  • 原文地址:https://www.cnblogs.com/nier/p/2524196.html
Copyright © 2011-2022 走看看