WittyHumour Ответов: 0

Как движок javascript выполняет замыкания внутри нескольких вложенных функций?


У меня была некоторая путаница с закрытиями, ниже приведен сценарий, проблема и код. Пожалуйста, Запустите свой код в Chrome, Если вы хотите действительно протестировать его

Поэтому я создал глубокие вложенные функции. Есть функция четырех вложенных функций четыре() вложен -&ГТ; внутри функция три() вложенные -&ГТ; внутри функции двух() вложенные -&ГТ; внутри функции().

function one() {
  var oneVar = "_oneVar_";
  return function two() {
    var twoVar = "_threeVar_";;
    return function three() {
      var threeVar = "_threeVar_";
      return function four() {
        threeVar;
        twoVar;
        oneVar;
      }
    }
  }
}
// Run code in Chrome specifically to check [[Scopes]]
// Other browser like Firefox does not show Scopes
console.dir(one);
console.dir(one());
console.dir(one()());
console.dir(one()()());


Поэтому, когда я запускаю код и проверяю результаты в инструментах разработчика Chrome, я наблюдаю, что замыкания в [[Scopes]] были созданы не только для функции четыре, но и для функции три и функции два. Это выглядит так, как если бы при объявлении локальных переменных, которые были вне этой области действия функции, функция продолжала выходить из своей функциональной области и продолжала искать локальную переменную, и в каждой функциональной области она продолжала передавать ее, создавая замыкания для каждой функции, пока не нашла переменную.

Так что же именно происходит под капотом ? Теперь я не уверен, связано ли это поведение с JavaScript или это как-то связано с инструментами Chrome Dev.

Что я уже пробовал:

Я погуглил еще не нашел ответа :(

0 Ответов