2017-04-12 4 views
0

Guten Tag zu SOF Leute, ich bin neu in diesem Forum und auch ich lerne, wie man Javascript joggt. Meine Frage ist, wie funktionieren Zuweisungsoperatoren wirklich? Ich weiß (zB * =), dassJavascript Zuweisung Operatoren

var (nameOfVariable)=(value) 
    nameOfVariable*=(some value) 

ist:

nameOfVariable= nameOfVariable * (some value) == value*(some value) 

Jetzt zum Beispiel:

var value=2; 
    console.log(value*=2); == 4 

Also alle n-mal Ich habe (Wert * = 2) in der console.log(), es gibt mir (Wert * 2^n) Bedeutung,

var value=2; 
    console.log(value*=2); == 4 (1st time) 
    console.log(value*=2); == 8 (2nd time) 
    console.log(value*=2); == 2 * (2^n) == 16 (nth time) 

Ich experimentierte dies in eine while-Schleife, und das ist, was passiert ist:

var value=2;   | (Console gave me this) 
    while(value<=10){  | 2 
    console.log(value); | 4 
    value*=2; }   | 8 
    console.log(value); | 16 

Warum ist der Zuweisungsoperator nicht ausschließlich in den Klammern in der „while“ Schleife? Warum beeinflusst es die Variable außerhalb? Bedeutet es, dass jedes Mal, wenn eine Variable, die an einem Zuweisungsoperator beteiligt ist, innerhalb von console.log() n-mal geschrieben wird, in meinem Fall Werte 2^n (Wert) zurückgegeben werden? Ich hoffe auf eine Erleuchtung für dieses, weil ich weiß, dass das Meistern der Programmierung bedeutet, die Grundlagen selbst zu meistern.

+2

es ist die gleiche Variable innerhalb der Schleife (die ** ist ** überhaupt kein Abschluss) wie außerhalb –

+0

Die while-Schleife ist kein Abschluss; Es ist ein Konstrukt. Dort gibt es keinen dedizierten Bereich - das gilt für Funktionen, nicht für Schleifen. – Utkanos

+0

Ironisch, wenn es eine echte Schließung gab, würden Sie das gleiche Verhalten sehen, weil die Variable "Wert" eingeschlossen wird – slebetman

Antwort

0

Der Grund, dass der Zuweisungsoperator innerhalb der Schleife nicht exklusiv ist, liegt an "scope".

Sie haben die Variable 'value' als 2 außerhalb der while-Schleife instanziiert. Wenn Sie also den Wert von 'value' ändern, weist sie der instanziierten Variablen den neuen Wert zu.

This guide sollte helfen.

+1

Aufgrund dieses "Scope" konnte ich auf dieses Video https://www.youtube.com/watch?v=SBwoFkRjZvE zugreifen und alles scheint klarer :), Danke! –

Verwandte Themen