[[scopes]]和执行上下文

时间:2018-02-23 18:12:36

标签: javascript scope closures

当我们执行以下代码时

var addTo = (passed) =>{
    var add = (inner) => {
    var foo = () => {
        return inner + passed
    }
    return foo;
    }
  return add;
}


var addThree = addTo(3)(5);

console.dir(addThree);

我们在chrome devtools中获得以下内容:

enter image description here

我理解闭包是什么以及为什么第一个闭包显示5而第二个闭包显示3.我现在似乎得到了闭包和执行上下文(堆栈)的概念但是不知道它们是如何完全的相关。

  1. [[scopes]]只是范围链的表示吗?
  2. 这与执行上下文有关吗?
  3. 执行上下文和闭包之间是否存在链接?

1 个答案:

答案 0 :(得分:3)

  

[[scopes]]只是范围链的表示吗?

  

这与执行上下文有关吗?

是。当调用该函数时(如addThree()),新的执行上下文将创建其本地函数作用域以从父[[scopes]]继承。

  

执行上下文和闭包之间是否存在链接?

没什么特别的。当前活跃的词汇环境,即(块)范围,与创建闭包更相关。