zoukankan      html  css  js  c++  java
  • 闭包,作用域,作用域链

    全局变量:可以在任何地方反复使用的变量,但可能会造成全局污染

    局部变量:不可以重复使用,只在函数中使用

    闭包:优点:可重用变量,又可以保护变量不受污染的机制

               缺点:比一般的函数更占用内存

    闭包流程图片

    1. 闭包准备阶段

      完成外层循环调用

      

    1. 调用内层循环

      

      3.再次调用内层循环

       

      4.调用结束后

       

    作用域:变量的可用范围

    1. 全局作用域window

    包含全局变量

    1. 局部作用域

    包含局部变量,在函数体内,局部变量的优先级高于同名的全局变量。   

    函数生命周期:

    1. 开始执行前(生命提前阶段)

     创建执行环境栈(数组):临时保存正在执行的函数的执行环境

    向执行环境中添加第一个默认程序main(),该方法创建出一个全局作用域的对象window

       

    2.定义函数时

    创建函数对象,封装函数的定义

    声明函数变量,引起了函数对象,函数对象的scope属性引用回,创建函数时的作用域

       

      3.调用函数时

    在ECS中加入一个新的元素并记录新函数的调用

    创建一个活动对象,保存本次调用用到的局部变量

    ECS中的新执行环境元素引用活动对象

    活动对象中的parent属性引用函数的scope指向副局作用域对象

    (前提是活动作用域中没有局部变量,才沿着parent向父级作用域找)

        

       

    4. 调用函数后

                        执行环境栈中本次函数的执行环境出栈

                                 导致活动对象被释放,导致局变量一同释放

       

       

    作用域链

      右多级作用域连续引用形成的链式结果

                掌握一切变量的使用顺序 :先在局部照,没有则延作用域链向父级作用域中找

  • 相关阅读:
    JAVA 一个接口多个实现类
    关于Web服务器
    美团买菜IOS版设备风控浅析与算法还原
    阿里App防Bot新版AliTigerTally方案浅析与算法还原1
    使用php的openssl_encrypt和python的pycrypt进行跨语言的对称加密和解密问题
    一个把人民币小写转换为大写中文的方法
    《重构》代码坏味道
    git 合并分支
    java中SPI机制 代码改变世界
    echo print print_r的区别
  • 原文地址:https://www.cnblogs.com/yqycr7/p/11334978.html
Copyright © 2011-2022 走看看