• javaScript中的执行环境和作用域


    执行环境

      执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为。

      每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。

    环境栈  

      每个函数都有自己的执行环境,当执行流进入一个函数的时候,函数的环境就会被推入环境栈中。

    作用域链

      当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。

      标识符的解析是沿着作用域链一级一级的搜索标识符的过程。搜索过程始终从作用域链的前端开始,然后逐级地向后回溯,直到找到标识符为止。

    对作用域的理解

      要回答作用域的问题,首先就得说到执行环境,执行环境的定义了变量或函数有权访问其他的数据,决定了他们的行为,每个执行环境中又有一个与之关联的变量对象,

      执行环境中定义的所有变量和函数都保存在这个对象之中,我们将全局执行环境中的变量对象定义为Window。这时候的全是环境中的执行变量也就是Window 就拥有一个全局作用域。

      每个函数都有自己的执行环境,当执行流执行到这个函数的时候,函数的执行环境会被推入环境栈中,执行中的函数被称为活动对象,此时的执行环境对应的变量对象创建一个作用域链,一层,一层的往上

      找,直到找到全局变量对象,也就是window。 此时函数中的变量对象包含的对象或函数就是局部作用域,形成执行流就是作用域链。说白了,执行环境就是作用域。

      

      

  • 相关阅读:
    SQL 中不同类型的表连接
    分享一些不错的sql语句
    SQL Server 日期和时间函数
    Delete,Update与LEFT Join
    Excel 相对引用与绝对引用
    SQL Update 巧用
    Delphi 多步操作产生错误,请检查每一步的状态值
    003-mysql查询表的数据大小、索引大小
    002-导出表结构、数据字典、说明文档
    008-运维管理链码
  • 原文地址:https://www.cnblogs.com/createGod/p/14590368.html
Copyright © 2020-2023  润新知