zoukankan      html  css  js  c++  java
  • javaScript中的执行环境和作用域

    执行环境

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

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

    环境栈  

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

    作用域链

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

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

    对作用域的理解

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

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

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

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

      

      

  • 相关阅读:
    HDU 2836 Traversal 简单DP + 树状数组
    UVa 1402 Runtime Error 伸展树
    UVa 11922
    HDU 4358 Boring counting 树状数组+思路
    HDU 4351 Digital root 线段树区间合并
    LA 6187
    UPC 2224 / “浪潮杯”山东省第四届ACM大学生程序设计竞赛 1008 Boring Counting 主席树
    max 宏定义取消:error C2589: error C2059: 语法错误 : “::”
    QT+VTK 对接使用
    标准C++中的string类的用法总结
  • 原文地址:https://www.cnblogs.com/createGod/p/14590368.html
Copyright © 2011-2022 走看看