当我执行以下操作时:
function makeAddFunction(amount) {
function add(number) {
return number + amount;
}
return add;
}
var addTwo = makeAddFunction(2);
var addFive = makeAddFunction(5);
alert(addTwo(1) + addFive(1));
makeAddFunction
的每个实例是否都有一个单独的堆栈,或者所有实例都使用相同的堆栈?并且进入和离开堆栈的变量的顺序是否重要?
答案 0 :(得分:2)
每个函数调用都会创建一个新的Function
( - Context)。所以要快速回答,是的,他们将根据ECMA脚本Execution Contexts
分别设置“堆栈”。
我不太清楚“变量进入和离开堆栈的顺序”是什么意思。
ECMAscript是关于上下文(对象)的。有一堆执行上下文可以按顺序调用。在一个上下文完成后,父上下文继续运行,直到它也完成(等等)。只要存在任何情境,该原则就会持续,Global context
再次受到关注。