2016-07-01 6 views

Antwort

3

Ja, jedes Mal, wenn eine Funktion aufgerufen wird, ein neuer Rahmen für diesen Lauf erstellt und alle Variablen darin definiert sind einzigartig und nicht zwischen den Läufen der Funktion geteilt.

Selbst wenn etwas wie das Folgende ausgeführt wird, würde das zu demselben Ergebnis führen, da die innere Funktion immer noch innerhalb des Bereichs der Funktion definiert ist und die Argumente für die äußere Funktion sehen kann.

var getFunction = function() { 
    function myFunction() { 
    }; 
    return myFunction; 
} 

var function1 = getFunction(); 
var function2 = getFunction(); 

function1 === function2; // false 
1

Dies kann wie folgt visualisiert werden. Der äußere Gültigkeitsbereich enthält die drei Variablenzuordnungen, und die Aufrufe von getFunction erstellen zwei neue Gültigkeitsbereiche, die ein in diesem Gültigkeitsbereich definiertes Funktionsobjekt zurückgeben.

visualization of scope

Verwandte Themen