当我们执行以下代码时
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.我现在似乎得到了闭包和执行上下文(堆栈)的概念但是不知道它们是如何完全的相关。
答案 0 :(得分:3)
[[scopes]]只是范围链的表示吗?
是
这与执行上下文有关吗?
是。当调用该函数时(如addThree()
),新的执行上下文将创建其本地函数作用域以从父[[scopes]]继承。
执行上下文和闭包之间是否存在链接?
没什么特别的。当前活跃的词汇环境,即(块)范围,与创建闭包更相关。