执行环境

可以把执行环境想象为一个圆圈,里面包含了一些变量、函数。

执行环境定义了变量或函数的有权访问的其他数据,决定了它们各自的行为。还有一个顶部执行环境。在浏览器中,顶部执行环境既为window,它在关闭浏览器过后会销毁此执行环境。

变量对象

可以把变量对象想象为圆圈的管家,它管理着当前执行环境里所有的变量和函数。

每一个执行环境都有一个变量对象,执行环境中所有的变量和函数都保存在这个变量对象中,但是这个变量对象我们无法通过代码进行访问。

环境栈

可以把环境栈想象成用于装置当前需要载入的执行环境的容器。

通过环境栈来控制执行环境的顺序,每进入一个新的执行环境,之前的执行环境将被挂载,而新的执行环境将被推入环境栈。当这个新的执行环境执行完之后,环境栈将当前已执行完的执行环境弹出并将控制权交回给之前被挂载的执行环境。以此继续执行,直到到达顶部执行环境。

作用域链

可以把作用域链想象成链接各个执行环境的一根线。

作用域链的作用保证了执行环境有权访问的变量、函数有序的访问,作用域链连接着当前执行环境以及当前执行环境之前被挂载的执行环境,一直以此方式直到顶部执行环境。

活动对象

如果执行环境是函数,那么执行环境的变量对象即为活动对象(argument对象),函数所有的参数均是argument对象的属性。

标识符解析

当在执行环境中使用某一个变量的时候,通过标识符来表示此变量,在使用标识符的时候,后台进行了一系列的查询,这个查询是依据作用域链来进行查询,首先查询作用域链当前的执行环境的变量对象是否包含此变量,如果没有则进行根据作用域链向上继续查询,直到顶部作用域链。在之间任何一个执行环境的变量对象中查询到则停止查询。如果没有查找出来则抛出错误。

Javascript执行环境、作用域链的更多相关文章

  1. javascript 执行环境,变量对象,作用域链

    前言 这几天在看<javascript高级程序设计>,看到执行环境和作用域链的时候,就有些模糊了.书中还是讲的不够具体. 通过上网查资料,特来总结,以备回顾和修正. 要讲的依次为: EC( ...

  2. JavaScript 执行环境以及作用域链

    执行环境(execution context,为简单起见,有时也称为"环境")是 JavaScript 中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了它们 ...

  3. JavaScript 执行环境、作用域、内存管理及垃圾回收机制

    前言 JavaScript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存. [原理]找出那些不再继续使用的变量,然后释放其占用的内存.为此,垃圾收集器会按照固定的时间间隔( ...

  4. 图解JavaScript执行环境结构

    JavaScript引擎在开始编译代码的时候,会对JavaScript代码进行一次预编译,生成一个执行环境,比如如下代码: window.onload=function(){ function sub ...

  5. javascript的关键所在---作用域链

    javascript的关键所在---作用域链 javascript里的作用域是理解javascript语言的关键所在,正确使用作用域原理才能写出高效的javascript代码,很多javascript ...

  6. javascript执行环境(执行期上下文)详解

    javascript执行环境(执行期上下文) 当js控制器(control)进入可执行代码时,控制器会进入一个执行环境,活动的多个执行环境构成执行环境栈,最上面的是正在运行的执行环境,当控制器进入一个 ...

  7. JavaScript 执行环境(执行上下文) 变量对象 作用域链 上下文 块级作用域 私有变量和特权方法

    总结自<高程三>第四章  理解Javascript_12_执行模型浅析   JS的执行环境与作用域  javascript高级程序第三版学习笔记[执行环境.作用域] 在javascript ...

  8. JavaScript——执行环境、变量对象、作用域链

    前言 这几天在看<javascript高级程序设计>,看到执行环境和作用域链的时候,就有些模糊了.书中还是讲的不够具体.通过上网查资料,特来总结,以备回顾和修正. 目录: EC(执行环境或 ...

  9. javascript 执行环境,作用域、作用域链、闭包

    1.执行环境 执行环境是JavaScript中国最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为.每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数 ...

  10. JavaScript执行环境和作用域(链)的那些事

    执行环境 什么是执行环境 提起作用域,我们不得不说说什么是执行环境.执行环境定义了变量或函数有权访问的其他数据,并决定其各自的行为.每一个执行环境都有一个对应的变量对象,这个对象的作用就是保存在环境中 ...

随机推荐

  1. PC-删除共享[绝对够狠的方法]

    1.批处理清除法-------------------------------------------------------------------------------------------- ...

  2. linux定时器用法

    linux定时器  原文出自http://www.cnblogs.com/processakai/archive/2012/04/11/2442294.html 今天看书看到了关于alarm的一些用法 ...

  3. MySQL 5.7 for Windows 解压缩版 MySQL 服务无法启动

    MySQL 5.7 for Windows 解压缩版配置安装 http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html basedi ...

  4. 算法之旅,直奔<algorithm>之十三 fill

    fill(vs2010) 引言 这是我学习总结<algorithm>的第十三篇,fill是一个很好的初始化工具.大学挺好,好好珍惜... 作用 fill  的作用是 给容器里一个指定的范围 ...

  5. Maven管理项目架包

    最近一直在用Maven管理项目的架包,从而发现了几个不错的官方或者非官方的网站. http://mvnrepository.com/artifact/com.ning  这个是我刚刚用来找HTTP开发 ...

  6. sping获取bean方法 解决资源耗尽

    // ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationCon ...

  7. poj1556

    计算几何+最短路 最短路是套的模版..= = 毕竟不是自己写的..模版上的点竟然是从0开始的. 难在建图.图中,比如2和12点,其间如果没有任何线段阻挡,那么边权是他们的直线距离,如果有线段阻挡,边权 ...

  8. 分布式助手Zookeeper(四)

    分布式助手Zookeeper(四)博客分类: Zookeeper zookeeper配置同步zookeeper编程 Zookeeper是分布式环境下一个重要的组件,因为它能在分布式环境下,给我带来很多 ...

  9. 多线程读写共享变量时,synchronized与volatile的作用

    在<effective java>中看的的知识点,在工作中确实遇到了~ keywordsynchronized能够保证在同一时刻,仅仅有一个线程能够运行某一个方法,或者某一个代码块. 同步 ...

  10. Memcached启动、关闭参数(摘录)

    启动参数注释如下: -p <num>  指定服务TCP端口,默认为11211 -U <num>   指定服务UDP端口  默认11211表示打开,设置0表示关闭 -s < ...