这个函数的堆栈将如何?

时间:2011-07-21 14:14:08

标签: javascript stack

当我执行以下操作时:

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的每个实例是否都有一个单独的堆栈,或者所有实例都使用相同的堆栈?并且进入和离开堆栈的变量的顺序是否重要?

1 个答案:

答案 0 :(得分:2)

每个函数调用都会创建一个新的Function( - Context)。所以要快速回答,是的,他们将根据ECMA脚本Execution Contexts分别设置“堆栈”。

我不太清楚“变量进入和离开堆栈的顺序”是什么意思。

ECMAscript是关于上下文(对象)的。有一堆执行上下文可以按顺序调用。在一个上下文完成后,父上下文继续运行,直到它也完成(等等)。只要存在任何情境,该原则就会持续,Global context再次受到关注。