博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript执行环境与作用域
阅读量:7180 次
发布时间:2019-06-29

本文共 654 字,大约阅读时间需要 2 分钟。

执行环境与作用域

  • 执行环境定义了变量或函数有权访问的其他数据,决定它们各自的行为。环境中定义的所有变量和函数都保存在这个对象中。
  1. 全局执行环境:是最外围的执行环境。在WEB浏览器中,全局执行环境被认为是windows对象,所有全局变量和函数都是作为windows对象的属性和方法创建的(直到应用程序退出如关闭网页或浏览器时才被销毁)。
  2. 环境栈:每个函数都有自己的执行环境。当执行流进入一个函数时,函数的环境就会被推入一个环境栈中。在函数执行之后,栈将其弹出,把控制权返回给之前的执行环境。
  3. 作用域链:当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途是保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端,始终都是当前执行的代码所在环境的变量对象。如果这个环境是函数,则将其活动对象(activation object)作为变量对象。活动对象在最开始时只包含一个变量,即arguments 对象(这个对象在全局环境中是不存在的)。作用域链中的下一个变量对象来自包含(外部)环境,而再下一个变量对象则来自下一个包含环境。这样,一直延续到全局执行环境;全局执行环境的变量对象始终都是作用域链中的最后一个对象。 标识符解析是沿着作用域链一级一级地搜索标识符的过程。搜索过程始终从作用域链的前端开始,然后逐级地向后回溯,直至找到标识符为止(如果找不到标识符,通常会导致错误发生)。

转载于:https://juejin.im/post/5cac7153e51d456e853f80f5

你可能感兴趣的文章
经典以太坊是什么
查看>>
SpringCloud之高可用的分布式配置中心(Spring Cloud Config)(七)
查看>>
h5实现微信扫码
查看>>
curl: (6) Couldn't resolve host 'www.ttlsa.com'
查看>>
JS闭包问题
查看>>
Linux下卸载文件系统
查看>>
我的友情链接
查看>>
文件名过长/文件夹路径过长 无法删除文件夹之解决办法
查看>>
Js获取当前页面URL的一些属性_已迁移
查看>>
test
查看>>
Android消息通知Totast的实现
查看>>
如何更好的管理企业内的打印机
查看>>
感慨下,什么样的IT
查看>>
SQL server 2005 PIVOT运算符的使用
查看>>
我的友情链接
查看>>
Dubbo源码分析(2),Dubbo中采用的设计模式
查看>>
我的友情链接
查看>>
LVS-DR工作原理图文详解
查看>>
PPT演讲10大准备技巧
查看>>
linux连接数检查
查看>>