首页
学习
活动
专区
工具
TVP
发布

作用执行环境作用

当代码在一个环境执行时,会创建变量对象的一个作用作用的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。...window,局部作用fun1,;全局执行环境window,局部执行环境fun1;window有自己的变量对象,就是window本身,window可以通过这个变量对象去访问变量a和变量对象fun1。...当fun1执行的时候创建了一个作用,所以fun1有两个变量对象,一个是自己,一个是全局环境的变量对象window。fun1可以在函数内部访问变量a,因为fun1所在的作用可以找到变量a。...局部环境fun2有一个变量c,但是fun2可以访问fun1环境中的变量b和全局环境的变量a; 这就是作用作用中的内部环境可以通过作用访问所有的外部环境,但外部环境不能访问内部环境中的任何变量和函数...作用中,每一个局部环境都会首先寻找自身环境中的属性和方法,搜索到了就停止寻找,没有找到再向上搜索直到最外层window还搜索不到就报错。 (完)

1.5K30

JavaScript——执行环境、变量对象、作用

前言 这几天在看《javascript高级程序设计》,看到执行环境作用的时候,就有些模糊了。书中还是讲的不够具体。通过上网查资料,特来总结,以备回顾和修正。...,Active Object) Scope Chain(作用)和[[Scope]]属性 EC——执行环境执行上下文 每当控制器到达ECMAScript可执行代码的时候,控制器就进入了一个执行上下文...作用执行上下文的作用域中查找变量的过程被称为标识符解析(indentifier resolution),这个过程的实现依赖于函数内部另一个同执行上下文相关联的对象——作用。...作用是一个有序链表,其包含着用以告诉JavaScript解析器一个标识符到底关联着那一个变量的对象。而每一个执行上下文都有其自己的作用Scope。...总结 EC分为俩个阶段,进入执行上下文和执行代码。 ECStack管理EC的压栈和出栈。 每个EC对应一个作用,VO|AO(AO,VO只能有一个),this。

72910
您找到你想要的搜索结果了吗?
是的
没有找到

JS作用作用

下面就要借助JS作用来更好的理解作用了。 在此之前,先要明确个概念,即执行环境作用是两个完全不同的概念。 函数的每次调用都有与之紧密相关的作用执行环境。...当代码在一个环境执行时,会创建变量对象的一个作用(scope chain)。作用的用途是保证对执行环境有权访问的所有变量和函数的有序访问。...作用包含了执行环境栈中的每个执行环境对应的变量对象。通过作用,可以决定变量的访问和标识符的解析。 注意:全局执行环境的变量对象始终都是作用的最后一个对象。...需要注意的是:内部环境可以通过作用访问所有的外部环境,但是外部环境不能访问内部环境中的任何变量和函数。 标识符解析(变量名或函数名搜索)是沿着作用一级一级地搜索标识符的过程。...搜索过程始终从作用的前端开始,然后逐级地向后(全局执行环境)回溯,直到找到标识符为止。 此外还要讲下JS作用域中的块级作用JS中是没有块级作用这个概念的。 什么是块级作用呢?

4.1K30

JS基础——作用作用

作用 [[scope]],函数定义时自动生成的一个隐式属性,是用来存储函数作用 Scope Chain的容器。作用是用来存储函数执行上下文 AO和全局执行上下文 GO的容器。...函数被定义时,系统会为函数生成[[scope]],[[scope]]中保存该函数的作用,并从该作用的起始位置开始存储当前环境作用。...函数被定义后&将要执行前会生成函数本身的AO,并将其插入作用的起始位置。...函数a被执行时,此时函数b也被定义,函数b的[[scope]]也在此时生成,其中存储函数b的作用,并将当前环境作用插入函数b作用的起始位置,即函数a的AO和GO。...函数b执行前一刻,会生成函数b的AO,插入到函数b作用的起始位置。 函数b执行完毕,函数b的AO被销毁,函数b回归到被定义的状态。

3.5K10

JS进阶:作用作用

因为放在里面的所有变量,都不会被外泄和暴露,不会污染到外面,不会对其他的库或者 JS 脚本造成影响。这是函数作用的一个体现。...这表明函数内部的变量i与循环变量i不在同一个作用,有各自单独的作用作用 1.什么是自由变量 首先认识一下什么叫做 自由变量 。...再一层一层向上寻找,直到找到全局作用还是没找到,就宣布放弃。这种一层一层的关系,就是 作用 。...作用执行上下文之间最大的区别是:执行上下文在运行时确定,随时可能改变;作用在定义时就确定,并且不会改变。 一个作用下可能包含若干个上下文环境。...同一个作用下,不同的调用会产生不同的执行上下文环境,继而产生不同的变量的值。

2.5K20

了解 JS 作用作用

JS中的声明提前 js中的函数作用是指在函数内声明的所有变量在函数体内始终是可见的。...引入一大段话来解释: 每一段js代码(全局代码或函数)都有一个与之关联的作用(scope chain)。 这个作用是一个对象列表或者链表,这组对象定义了这段代码中“作用域中”的变量。...作用举例: 在js最顶层代码中(也就是不包括任何函数定义内的代码),作用由一个全局对象组成。...作用创建规则: 当定义一个函数时(注意,是定义的时候就开始了),它实际上保存一个作用。...,另外,with语句可用于临时拓展作用(不推荐使用with) 语法形如: with(object) statement 这个with语句,将object添加到作用的头部,然后执行statement

2K10

JavaScript之JS执行环境作用

1、全局执行环境:全局执行环境是最外围的一个执行环境。在Web浏览器中全局执行环境被公认为是window对象,因为所有的全局变量和函数都是作为windows对象的属性和方法创建的。...当某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁。(全局执行环境则到浏览器被关闭时才会被销毁); 2、函数的执行机制:每个函数都有自己的执行环境。...当执行流进入一个函数时,函数的换进就会被推入一个环境栈中,当函数执行完之后,栈将其环境弹出,把控制权返回给之前的执行环境(假设当前执行函数没有内嵌函数,且他有父函数包围)。...ECMAScript程序中的执行流正是由这个方便的机制控制着。 3、作用:每一个执行环境对应一个作用,这是当代码在一个环境执行时,自己创建的。...结构:作用的顶端永远是当前执行代码的所在环境的变量对象(也就是当前函数里面的变量对象), 用途:保证对执行环境有权访问的所有变量和函数的有序访问(这里的变量和函数指的是在当前函数外部的函数的变量和函数以及全局变量和函数

63450

转 javascript基础详解-执行环境作用

注意,一个function可能产生无限的上下文环境,因为一个函数的调用(甚至递归)都产生了一个新的上下文环境。 一系列活动的执行上下文从逻辑上形成一个栈。...作用(scope chain) 作用的原理和原型很类似,如果这个变量在自己的作用域中没有,那么它会寻找父级的,直到最顶层。...JS的语法风格和C/C++类似, 但作用的实现却和C/C++不同,并非用“堆栈”方式,而是使用列表,具体过程如下(ECMA262中所述): 任何执行上下文时刻的作用, 都是由作用(scope chain...不过,有些情况下也会包含其它的对象,例如在执行期间,动态加入作用中的—例如with或者catch语句。...当查找标识符的时候,会从作用的活动对象部分开始查找,然后(如果标识符没有在活动对象中找到)查找作用的顶部,循环往复,就像作用那样。

39110

JS执行上下文栈和作用

一、JS执行上下文 执行上下文就是当前 JavaScript 代码被解析和执行时所在环境的抽象概念, JavaScript 中运行任何的代码都是在执行上下文中运行。...(2)创建作用(Scope Chain):在执行期上下文的创建阶段,作用是在变量对象之后创建的。...在 ES6 之前,js 中的作用分为两种:函数作用和全局作用,现在作用分为:全局作用、函数作用、块级作用。   ...四、作用   我们知道函数在执行时是有个执行栈,在函数执行的时候会创建执行环境,也就是执行上下文,在上下文中有个大对象,保存执行环境定义的变量和函数,在使用变量的时候,就会访问这个大对象,这个对象会随着函数的调用而创建...,函数执行结束出栈而销毁,那么这些大对象组成一个,就是作用

63010

【JavaScript】执行上下文与作用作用

根据ECMAScript实现的宿主环境不同,表示全局上下文的宿主环境可能不一样。...当代码执行流入函数时,函数的上下文会被推到一个上下文栈上(js执行流是在栈空间进行的),在函数执行完毕之后,上下文栈会弹出该函数上下文,将控制权返回给之前的上下文,ECMAScript程序的执行流就是通过这个上下文栈进行控制的...作用 上下文中的代码在执行的时候,会创建上下文对象的一个作用。这个作用决定了各级上下文中代码在访问变量和函数时的顺序。...代码执行时的标识符解析式通过作用逐级搜索标识符名称完成的。搜索过程始终从作用的最前端全局上下文变量对象逐级往下,直到找到标识符(若找不到通常会报错)。...作用增强 所谓作用增强说就是通过一些语句在作用前端临时添加一个上下文,这个上下文会在执行后被删除,代码执行到以下任意一种情况都会出现这个现象: try/catch中的catch块 with语句

64020

深入理解JS作用执行上下文

执行上下文:执行上下文,又称为执行环境(execution context),听起来很厉害对不对,其实没那么难。图片作用:其实,我们知道,JS 用的是 词法作用 的。...当 需要调用 testValue 变量时;先找本身作用,没有,JS 引擎会顺着 作用 向下寻找 0 => 1 => 2 => ...。...作用,是在 JS 引擎 完成 初始化执行上下文环境,已经确定了,这跟我们 变量提升 小节讲述得一样。它保证着 JS 内部能正常查询 我们需要的变量!。我的一点疑惑注意:在这里,我无法证明一个问题。...全局执行上下文初始化完毕之后,它是把所有的函数作用确定。还是,初始化一个执行上下文,将本作用的函数作用确定。...JS 引擎查找变量时会耗费多少时间?所以,这个故事告诉我们,尽量将 全局变量局部化 ,避免,作用的层层嵌套,所带来的性能问题。理解 执行上下文:将这段代码,放置于全局作用之下。

44340

js作用作用和它的一些优化

作用作用可以嵌套,嵌套在内部的作用可以访问外部的作用所声明的变量和函数。通过上面词法环境的介绍,我们大概清楚,作用的这种嵌套关系是通过词法环境的外部词法环境引用outer来关联实现的。...这种词法环境的外部引用的关联关系,构建了一条单向的词法环境的链条。这就是我们常说的作用。本质上,作用是JavaScript引擎给所执行代码维护的一条词法环境链条。...外部作用变量标识符的多次引用,会造成执行过程中的标识符解析沿作用查找的频繁执行,这种查找在第一次解析引用时是必须的,但是后续解析引用却是重复的。...with语句可以在当前作用前端临时添加一个词法环境,从而在位置构建和使用新的作用。...作用作用嵌套的结构产物,所有变量标识符的解析和引用会沿着作用进行查找。而词法环境,是JavaScript对于作用的内部技术实现。

1.7K00

js作用与预解析

作用 1.1 全局作用 在script标签下直接声明的变量或函数,都会在全局作用下。...(函数执行完内部变量就会被js销毁,除非使用闭包) 1function aaa(params) { 2 var bb = "bb"; 3} 4 5console.log(bb);//bb is not...7console.log(a);//"a" 8console.log(b);//b is not defined 9console.log(c);//c is not defined 10 1.4 作用...在使用一个变量的时候,首先js会先在当前作用下去寻找该变量,如果没找到,再到它的上层作用寻找,以此类推直到找到该变量或是已经到了全局作用。...预解析 js运行分为两步:预解析,代码执行 预解析:var声明的变量(不赋值)和函数,会被提升到当前作用最前面 代码执行:按照代码书写的顺序从上往下执行 预解析优先级: 函数>变量 因为函数提升是整体提升

39510

作用作用

作用作用 通常来说,一段程序代码中所用到的名字并不总是有效或可用的,而限定这个名字的可用性的代码范围就是这个名字的作用scope。...当一个方法或成员被声明,他就拥有当前的执行上下文context环境。在有具体值的context中,表达式是可见也都能够被引用。如果一个变量或者其他表达式不在当前的作用,则将无法使用。...作用也可以根据代码层次分层,以便子作用可以访问父作用,通常是指沿着链式的作用查找,而不能从父作用引用子作用域中的变量和引用。...[[Scopes]]: Scopes[1] 0: Global ... */ // 可以看见声明的s函数运行的上下文环境是全局作用 函数作用 当声明一个函数后,在函数内部声明的方法或者成员的运行环境就是此函数的函数作用...作用、localContext作用、Global作用,总结来说,当需要使用函数或者变量时,如果在当前作用域中没有查到值,就会向上级作用去查,直到查到全局作用,这样一个查找过程形成的链条就叫做作用

1.9K20

深入理解JS作用执行上下文3

执行上下文:执行上下文,又称为执行环境(execution context),听起来很厉害对不对,其实没那么难。图片作用:其实,我们知道,JS 用的是 词法作用 的。...当 需要调用 testValue 变量时;先找本身作用,没有,JS 引擎会顺着 作用 向下寻找 0 => 1 => 2 => ...。...作用,是在 JS 引擎 完成 初始化执行上下文环境,已经确定了,这跟我们 变量提升 小节讲述得一样。它保证着 JS 内部能正常查询 我们需要的变量!。我的一点疑惑注意:在这里,我无法证明一个问题。...全局执行上下文初始化完毕之后,它是把所有的函数作用确定。还是,初始化一个执行上下文,将本作用的函数作用确定。...JS 引擎查找变量时会耗费多少时间?所以,这个故事告诉我们,尽量将 全局变量局部化 ,避免,作用的层层嵌套,所带来的性能问题。理解 执行上下文:将这段代码,放置于全局作用之下。

47920

【JavaScript】作用 ③ ( JavaScript 作用 | 作用变量查找机制 )

一、JavaScript 作用 1、作用 在 JavaScript 中 , 任何代码都有 作用 , 全局作用 : 在 标签中 或者 js 脚本中 定义的变量 属于 全局作用...之前使用 var 关键字在 {} 代码块 中定义的变量 , 取决于 代码块位置 , 代码块在全局作用 则 该变量属于全局作用 , 代码块在 局部作用 则该变量属于 局部作用 ; 2、作用 如果在...确定取哪个值 , 这种作用结构 称为 " 作用 " ; 内部函数 , 外部函数 , 全局变量 中 , 定义的变量名称 可能是相同的 , 给定一个变量名 , 需要从作用中具体查找 作用 是...JavaScript 的重要的概念 , 用于 查找 变量名 对应的 不同作用的 变量 ; 当 JavaScript 代码 执行时 , 会创建变量对象的 作用 , 其用途是保证对执行环境有权访问的所有变量和函数的有序访问...; 3、作用变量查找机制 在 JavaScript 代码中 的 嵌套作用 中 , 查找 变量 或 函数 的 机制就是 作用 的 链式查找机制 ; 内部函数 在 访问 指定名称的 变量时 ,

6610

JS入门难点解析8-作用作用执行上下文,执行上下文栈等分析

简介 JS入门难点系列到此,我们将进行一个阶段性的总结。将前面所学的有关作用,LHS,RHS,执行上下文栈,执行上下文,变量对象,作用,this等知识点串联起来,使大家有一个更新清晰的认识。...作用:很容易与作用弄混。作用其实是在进入执行上下文以后创建的。是由当前的活动对象和当前函数的[[scope]]属性拼接而成。如果在全局执行上下文,则当前作用仅有全局变量对象。...参考 JS入门难点解析3-作用 JS入门难点解析4-执行上下文栈 JS入门难点解析5-变量对象 JS入门难点解析6-作用 JS入门难点解析7-this 一道js面试题引发的思考 JavaScript...深入之执行上下文 深入理解javascript作用系列第五篇——一张图理解执行环境作用 前端基础进阶(二):执行上下文详细图解 Javascript变量的作用作用详解 JavaScript...关于作用作用和闭包的理解 理解js中的作用,作用以及初探闭包

65110

JavaScript-作用、块级作用、上下文、执行上下文、作用

九、执行上下文 (1)当函数执行时,会创建一个称为执行上下文的内部对象(可理解为作用,不是前面讨论的上下文)。一个执行上下文定义了一个函数执行时的环境。...当在全局上下文中调用执行一个函数时,程序流就进入该被调用函数内,此时引擎就会为该函数创建一个新的执行上下文,并且将其压入到执行栈顶部(作用)。...(3)一旦fourth函数执行完成,其就会从作用顶部移除,并且执行权会返回到third函数。这个过程一直持续到所有代码完成执行。...10.2 攀爬作用 (1)当不同执行上下文之间存在 变量命名冲突,可以通过攀爬作用解决(从顶部到底部)。...如果在自己的变量对象中没发现要查找的变量,继续搜索作用。他将攀爬作用检查每一个执行上下文的变量对象,去寻找和变量名称匹配的值。

1.6K21
领券