执行环境 作用域 作用域链 闭包的理解

1.首先 当一个变量或者函数被声明的时候 它的执行环境便被确认 ,

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

而作用域就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期

 每次进入一个新的执行环境,都会创建一个用于搜索变量和函数的作用域链。作用域链是函数被创建的作用域中对象的集合。作用域链可以保证对执行环境有权访问的所有变量和函数的有序访问。

  作用域链的最前端始终是当前执行的代码所在环境的变量对象(如果该环境是函数,则将其活动对象作为变量对象),下一个变量对象来自包含环境(包含当前还行环境的环境),下一个变量对象来自包含环境的包含环境,依次往上,直到全局执行环境的变量对象。全局执行环境的变量对象始终是作用域链中的最后一个对象。

2.闭包则是打破作用域链可以从父环境访问到子环境中的变量的函数 并且不会被js的垃圾处理机制所检测 在本质上,闭包是将函数内部和函数外部连接起来的桥梁 闭包会使子函数保持其作用域链的所有变量及函数与内存中 容易造成内存泄漏

原文地址:https://www.cnblogs.com/wildccy/p/10540608.html

时间: 2024-08-03 22:09:56

执行环境 作用域 作用域链 闭包的理解的相关文章

深入理解javascript中执行环境(作用域)与作用域链

相信很多初学者对与javascript中的执行环境与作用域链不能很好的理解,这里,我会按照自己的理解同大家一起分享. 一般情况下,我们把执行环境分为全局执行环境和局部执行环境,其中局部执行环境我们又可以称之为函数执行环境.那么究竟什么使执行环境呢?通俗的说,执行环境即为代码执行时所处的环境.我们下来看一看如下代码,再进一步分析之. 1 2 3 4 5 6 7 8 9 10 11 <script><br>var name="zhuzhenwei"; functio

VO、AO、执行环境和作用域链

1.变量对象(variable object) 原文:Every execution context has associated with it a variable object. Variables and functions declared in the source text are added as properties of the variable object. For function code, parameters are added as properties of

深入理解javascript作用域系列第五篇——一张图理解执行环境和作用域

× 目录 [1]图示 [2]概念 [3]说明[4]总结 前面的话 对于执行环境(execution context)和作用域(scope)并不容易区分,甚至很多人认为它们就是一回事,只是高程和犀牛书关于作用域的两种不同翻译而已.但实际上,它们并不相同,却相互纠缠在一起.本文先用一张图开宗明义,然后进行术语的简单解释,最后根据图示内容进行详细说明 图示 查看大图 概念 [作用域] 作用域是一套规则,用于确定在何处以及如何查找标识符.关于LHS查询和RHS查询详见作用域系列第一篇内部原理. 作用域分

执行环境,作用域,作用域链详解

声明:该文章有些概念摘自<JavaScript高级程序设计> 1.执行环境:也称"环境",执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为.(全局定义的变量,函数里面可以访问.一般情况下,函数里面定义的变量,全局无法访问). 2.全局执行环境:全局执行环境是最外围的一直执行环境,(在web浏览器中,全局执行环境被认为是window对象,因此所有全局变量和函数都是作为window对象的属性和和方法创建的),全局环境直到应用程序退出(关闭网页或者刷新网页)才会被

执行环境,作用域

在javascript的学习中,执行环境.作用域是2个非常非常重要和基本的概念,理解了这2个概念对于javsacript中很多脚本的运行结果就能明白其中的道理了,比如搞清作用域和执行环境对于闭包的理解至关重要. 一.执行环境(exection context,也有称之为执行上下文) 所有 JavaScript 代码都是在一个执行环境中被执行的.执行环境是一个概念,一种机制,用来完成JavaScript运行时在作用域.生存期等方面的处理,它定义了变量或函数是否有权访问其他数据,决定各自行为. 在j

4.1-4.2 基本类型及引用类型,执行环境及作用域

一.理解基本类型和引用类型的值 ECMAScript变量包含两种不同数据类型的值:基本类型值 和 引用类型值. 基本类型值指的是简单的数据段,而引用类型的值指那些可能由多个值构成的对象 引用类型的值是保存在内存中的对象,javascript不允许直接访问内存中的位置,也就是不能直接操作对象的内存空间.在操作对象时,实际上是在操作对象的引用而不是实际的对象.引用类型的值是按引用访问的,基本类型是按值访问的,因为可以操作保存在变量中的实际的值. 动态的属性 定义基本类型值和引用类型值的方式是类似的:

JS复习—执行环境及作用域

执行环境及作用域 一.定义 (1)执行环境:执行环境定义了变量或函数有权访问其他数据,决定了它们各自的行为. (2)作用域链:保证对执行环境有权访问的所有变量和函数的有序访问.作用域链本质是一个指向变量对象的指针列表,它只是引用但不实际包含变量对象 (3)变量对象:环境中定义的所有变量和函数都保存在这个对象中 (4)活动对象:如果当前的环境是函数,则这个变量对象是活动对象 (5)作用域:程序代码中定义这个变量的区域 二.标示符的搜索过程 当某个函数被调用时,会创建一个执行环境及相应的作用域链.然

浅谈JS执行环境及作用域

 今天刚刚开通博客,也是第一次写博文,略感紧张.作为一个表达能力弱弱的人来说,自己花三分钟理解一个知识点,当别人问起时,也许需要30分钟才只是让别人知道自己在说什么,一点也不夸张,希望在博客上可以练习对语言的组织能力并记录学习笔记与大家一起交流. 进入正题>> 首先,相关的概念定义如下: 1. 执行环境: 所有 JavaScript 代码都是在一个执行环境中被执行的.执行环境是一个概念,一种机制,用来完成JavaScript运行时在作用域.生存期等方面的处理,它定义了变量或函数有权访问的其他数

《JavaScript高级程序设计》读书笔记 ---执行环境及作用域

执行环境及作用域 执行环境(execution context,为简单起见,有时也称为“环境”)是JavaScript 中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有变量和函数都保存在这个对象中.虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它.全局执行环境是最外围的一个执行环境.根据ECMAScript 实现所在的宿主环境不同,表示执行环境的

4.2 执行环境和作用域

执行环境和作用域 每个函数都有自己的执行环境 作用域链(scope chain) 作用:保证执行环境有权访问的所有变量和函数的有序访问. 理解:以函数为界限,每个函数都有自己的变量对象,自己界限的变量是可以访问的.也可以访问外围包围住这个函数里面的变量.但是大(外围)函数不能访问此函数里面的变量.函数执行完会被销毁. 每个函数有自己的执行环境,当执行流进入一个函数的时候,函数的环境就会被推入到一个环境栈中.而函数执行完后,栈就会将其环境弹出. 内部环境可以通过作用域链访问所有的外部环境,但外部环