美文网首页
作用域、作用域链

作用域、作用域链

作者: 无穷369 | 来源:发表于2021-02-26 00:54 被阅读0次

写出下面代码执行之后的结果,并分析原理

let x = 1;
function A(y){
    let x = 2;
    function B(z){
        console.log(x + y + z);
    }
    return B
}
let C = A(2);
C(3);

执行结果

7

原理分析
考察点是js在浏览器中的运行机制

  1. 浏览器在运行js代码之前先会开辟一块儿空间,这块儿空间也叫栈内存 ECStack,也可叫做执行上下文栈。
  2. 然后创建执行上下文(EC),并压入到 ECStack 中。
  3. EC中包含,变量对象(VO)和函数(AO)。
  4. Scope:作用域,创建函数的时候赋值 Scope Chain:作用域链
  5. 函数执行会创建一个全新的全局上下文
image.png

也可以这样理解


image.png

再来一个案例

let i = 1;
let fn = (i) => (n) => console.log(n + (++i))
let f = fn(1)
f(2)
fn(3)(4)
f(5)
console.log(i)

结果

4
8
8
1
image.png

相关文章

  • 作用域链和闭包

    在谈作用域链之前先说一下与作用域链关系紧密的执行环境和作用域。 作用域:作用域指的是变量的适用范围。 作用域链:作...

  • web性能实践

    一. 作用域 前面我们了解作用域概念的以及作用域链是如何运作的。 随着作用域链中的作用域数量的增加,访问当前作用域...

  • 作用域链

    作用域链 把多个作用域串起来便形成了作用域链;每个函数在初始化完成之后就拥有了各自的作用域链,但此时的作用域链中并...

  • 作用域/作用域链 闭包及其使用

    一、作用域、作用域链 作用域(scope) 浅显的理解: 作用域就是变量的可用范围(scope) 为什么要有作用域...

  • JS 作用域

    作用域 作用域:限制某个变量在某个区域内有效 作用域分为 全局作用域 和 局部作用域 作用域链 从里到外依次执行 ...

  • 作用域和作用链

    关键词:作用域作用链 作用域 js中没有块级作用域 全局作用域,函数作用域太简单,就不演示(≧▽≦)/啦啦啦 作用...

  • 2018-12-18

    JS高级 作用域&作用域链 作用域: 1.作用域的个数:n(函数声明的个数)+1(全局作用域)2.作用域不会存储变...

  • 作用域和闭包

    作用域链 (据我所知)所有的编程语言都存在作用域链。整个代码存在全局作用域、函数作用以及块级作用域。 上述代码将会...

  • 彻底搞懂JS作用域和作用域链

    作用域和作用域链 作用域:决定了代码区块中变量和其他资源的可见性; ·全局作用域和函数作用域 作用域是分层的内部可...

  • JavaScript面试考点之作用域和作用域链、执行上下文和执行

    1、作用域和作用域链 1)作用域 作用域是变量(变量作用域又称上下文)和函数生效(能被访问)的区域。作用域决定了代...

网友评论

      本文标题:作用域、作用域链

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