Eine lokale Funktion im Closure deklariert eine Variable mit demselben Namen, die im Closure existiert. Wie können wir also auf die Variable closure von der lokalen Funktion aus zugreifen?Unterscheidung von Schluss- und lokalen Variablen
function closure()
{
var xVar;
function func1()
{
var xVar;
// how to distinguish local and closure scopes.
return xVar;
}
return function() { return func1(); };
}
Das Erstellen eines privaten Objekts und die Erstellung privater Variablen als Eigenschaften dieses Objekts können hilfreich sein. Aber ich frage mich, ob es eine bessere und saubere Lösung gibt. Kann eine Scope-Kette helfen?
Ich habe bearbeitet, um es zu einem vollständigen Abschluss zu machen. Wie auch immer, Schließungen sind hier nicht so wichtig, es könnte für innere Funktionen in Betracht gezogen werden, aber es könnte eine Lösung mit Schließungen geben.
Dank
Ich denke, dass er das weiß. Die Frage ist, wie würden Sie aus Code innerhalb von "func1" explizit auf die in "closure" definierte "xVar" verweisen (und nicht auf die in "func1" definierte "xVar")? – Pointy
Ich antwortete das in meinem ersten Absatz. –