Über wie viel von seinem umschließenden Bereich schließt ein (Javascript) -Verschluss?

Wenn ich eine Funktion habe, die Variablen aus den einschließenden Bereichen verwendet und diese Funktion außerhalb dieses Bereichs (dieser Bereiche) verwendet, wird dies als Abschluss bezeichnet.

Gibt es eine Angabe darüber, über "wie viel" der einschließenden Bereiche eine Funktion schließen muss? (Oder anders ausgedrückt, über "wie wenig" muss es unbedingt schließen?)

Erwägen

function Outer() {
  var bigGuy = createSomethingHuge();
  var tinyNumber = 42;
  return (function () { /* CONTENTS */ });
}

Oder auch

function Layer1() {
  var bigOne = somethingHugePlease();
  var Layer2 = function() {
    var bigToo = morePlease();
    var Layer3 = function() {
       var huge = reallyHuge();
       var tiny = 42;
       return (function () { /* CONTENTS */ });
    };
    return Layer3();
  };
  return Layer2();
}

Welche dieser Variablen schließt die endgültige zurückgegebene Funktion? Kommt es auf den Inhalt dieser letzten Funktion an eval ...?)?

Mich interessiert vor allem, ob es für diese Fälle eine Spezifikation gibt, nicht so sehr das Verhalten einer bestimmten Implementierung.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage