2017-11-06 1 views
-1

Hier drükke ich eine Funktion, die über die Variable 'i' geschlossen ist und einen Abschluss erzeugt.Verschluss, wo wird der Wert gespeichert?

var myFunc = function(){ 
    var i = 0; 
    function increment(){ 
     return ++i; 
     console.log(i); 
    } 
    return increment 
} 

jetzt Wenn ich diese Funktion zu anderen Variablen wie zuweisen

var newFunc = myFunc(); 
var newFunc2 = myFunc(); 

einer von ihnen ruft in

newFunc() // 1 
newFunc() // 2 
newFunc() // 3 
newFunc2() // 1 ?? 

führen Wo ist i der Wert von var gespeichert zu werden? wird es im Ausführungskontext jeder Funktion gespeichert, so dass es nur geändert werden kann, wenn wir diese spezifische Funktion aufrufen.

+2

* "Wo wird der Wert von var i gespeichert?" * In der Umgebung, die jedes Mal erstellt wird, wenn Sie 'myFunc' aufrufen. –

Antwort

0

Ich sehe Sie die Variable i in den

myFunc 

definieren, was bedeutet, dass der Umfang der Variablen i in dieser Funktion sein wird. Also, wenn Sie diese Funktion aufrufen, wird es schaffen, erstellen Sie ein eigenes i.

+0

'der Umfang der Variable ich werde innerhalb dieser Funktion sein 'nicht nur innerhalb dieser Funktion, in diesem bestimmten Funktionsaufruf. Mehrere Aufrufe an diese Funktion erzeugen mehrere Variablen "i", die unabhängig voneinander sind, jeder in seinem eigenen, separaten Bereich. – Thomas

+0

'Funktionsaufruf' Genau! Vielen Dank für Ihre Kommentare und Ihre Erklärung. – Youbent

Verwandte Themen