Как будет выглядеть стек этой функции? - PullRequest
0 голосов
/ 21 июля 2011

Когда я делаю следующее:

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 Ответ

2 голосов
/ 21 июля 2011

Каждый вызов функции создает новый Function (-Context). Таким образом, чтобы ответить на этот вопрос быстро, да, у них будут отдельные «стеки» в терминах ECMAscripts Execution Contexts.

Я не совсем уверен, что вы имеете в виду под "порядком переменных, входящих и выходящих из стека".

ECMAscript - это все о контекстах (объектах). Существует стек контекстов выполнения, которые вызываются по порядку. После завершения одного контекста родительский контекст продолжает работать, пока не будет завершен (и т. Д.). Этот принцип действует до тех пор, пока существуют какие-либо контексты, если нет, то Global context снова привлекает внимание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...