javascript - [[范围]] 和执行上下文

标签 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. 执行上下文和闭包之间有联系吗?

最佳答案

Is [[scopes]] just a representation of the scope chain?

是的。

Is this at all related to the execution context?

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

Is there a link between the execution context and closures?

没什么特别的。当前事件的词法环境,即( block )范围,与闭包的创建更相关。

关于javascript - [[范围]] 和执行上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48953920/

相关文章:

javascript - jQuery 在排序后选择了一个选项

c# - 找不到 ASP.NET 母版页

javascript - 如何在 JS 中独立于上下文(浏览器、节点)分配读取根变量?

javascript - 如何从闭包中的函数内部访问闭包中的变量?

javascript - 在所有普通 anchor 标记上使用 jQuery 执行页面加载

javascript - 如何创建水平隐藏滚动条

javascript - 如何仅在特定的 Bootstrap Modal 上使用 Bootstrap 4?

java - Kotlin objects & companion objects & lazy 如何处理内存

ios - Swift 闭包作为字典中的值

java - 将参数传递给 gradle 构建脚本