当我们执行以下代码时
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 中得到以下内容:
我理解什么是闭包以及为什么第一个闭包显示 5 而第二个闭包显示 3。我现在似乎了解了闭包和执行上下文(堆栈)的概念,但不知道它们之间的确切关系。
- [[scopes]] 只是作用域链的表示吗?
- 这与执行上下文有关系吗?
- 执行上下文和闭包之间有联系吗?
最佳答案
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/