美文网首页
JS之执行环境以及作用域

JS之执行环境以及作用域

作者: 晴天的晴q | 来源:发表于2018-12-19 21:22 被阅读0次

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

每个执行环境中都有一个与之关联的变量对象(我们编写的代码无法访问它,但解析器会在处理数据时在后台使用它。在执行环境内定义的所有变量和函数都保存在这个对象中)。

web浏览器中,把window对象作为其全局执行环境(全局执行环境是最外围的一个执行环境),则此时在全局条件下定义的所有函数和变量都作为window的属性和方法。

某个执行环境中的所有代码执行完毕后,则该执行环境销毁,保存在其中的所有变量和函数定义也随之销毁。全局执行环境则在应用程序退出后销毁。

每个函数都会有自己的执行环境,当代码执行到该函数,则其执行环境会被推入一个环境栈中。在函数执行完毕后,栈将其环境弹出,把控制权返回给之前的执行环境。

当代码在一个执行环境中执行时,会创建变量对象的一个作用域链。

2、作用域链保证对执行环境有权访问的所有变量和函数的有序访问。作用域的前端,则始终都是当前执行的代码所在环境的变量对象。函数中则将其活动对象作为变量对象。

活动对象中最开始只包含一个变量,即arguments对象(全局环境中不存在)。作用域链中的下一个变量对象来自其包含环境,再下一个变量对象则来自下一个包含环境,以此类推直到全局环境。

全局执行环境始终的变量对象始终都是作用域链中的最后一个对象。

标识符解析是沿着作用域链一级一级地搜索标识符的过程。搜索过程始终是从作用域链的最前端开始,然后逐级向后搜索,直到找到标识符为止,找不到通常会导致错误。

内部环境可以通过作用域链访问所有的外部环境,外部环境不能访问内部环境的任何变量和函数。

3、延长作用域链

以下两个语句都会在作用域链的前端添加一个变量对象。

try-catch语句中的catch块:通过创建一个新的变量对象,其中包含的是被抛出的错误对象的声明。

with语句:将指定的对象添加到作用域链前端。

4、没有块级作用域

相关文章

  • JS学习之执行环境和作用域

    JS学习之执行环境和作用域 执行环境和作用域相关介绍 执行环境 执行环境定义了变量或函数有权访问的其他数据,决定了...

  • JS之执行环境以及作用域

    1、执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。 每个执行环境中都有一个与之关联的变量对象(...

  • javascript的执行上下文—作用域链 闭包

    js作用域:函数作用域、全局作用域作用域链:由当前环境与上层环境的一系列变量对象组成,它保证了当前执行环境对符合访...

  • js关于作用域链以及闭包的理解

    js的作用域链是由当前执行环境下的变量对象以及上层的执行环境下的变量对象组成,它保证了当前执行环境对符合访问它的权...

  • js函数中的this

    前两篇文章“执行环境和作用域”和“js中的闭包”,我对谈了执行环境、作用域、作用域链和闭包的理解。但当牵涉到对象中...

  • 作用域与this

    作用域与 this 一、作用域 1.1 JS 中的内存空间分为两种: 栈内存:提供 js 代码的执行环境;存储基本...

  • JS 作用域与作用域链

    1. 作用域 作用域就是代码的执行环境,全局执行环境就是全局作用域,函数的执行环境就是私有作用域,它们都是栈内存。...

  • 作用域和作用域链

    1. 作用域 作用域就是代码的执行环境,全局执行环境就是全局作用域,函数的执行环境就是私有作用域,它们都是栈内存。...

  • 执行环境 & 作用域 & 闭包

    执行环境 & 作用域 & 闭包 执行环境 , 作用域 , 闭包 , 闭包应用 执行环境 执行环境定义了 当前环境的...

  • Javascript 作用域链、闭包的理解和应用

    1. 什么是作用域,作用域链 作用域,指代码所在的执行环境。代码执行时产生的最先产生的执行环境,称为全局作用域, ...

网友评论

      本文标题:JS之执行环境以及作用域

      本文链接:https://www.haomeiwen.com/subject/nspskqtx.html