【发布时间】:2018-02-23 18:12:36
【问题描述】:
当我们执行以下代码时
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]] 只是范围链的一种表示吗?
- 这是否与执行上下文有关?
- 执行上下文和闭包之间有联系吗?
【问题讨论】:
-
你如何理解“执行上下文”这个词?
-
执行上下文是一个堆栈,它从全局开始,每次调用函数时都会在堆栈上添加一个新上下文(带有 this 的值,以及所有变量/范围链),如果一个值是返回一个上下文被弹出堆栈
-
是这样吗??
-
是的,执行上下文是一个堆栈帧。只是想在回答之前确认一下。
标签: javascript scope closures