javascript setInterval () und Variablenbereich

8

OK, ich habe hier mehrere Fragen mit dem gleichen Titel gelesen, konnte aber immer noch keine Lösung für mein Problem finden. Ich arbeite an einem grundlegenden Javascript-Countdown-Timer und ich bleibe bei der Aktualisierung des Wertes der Variable a .

%Vor%

Wenn ich den Wert von a um -1 dekrementiere, sollte console.log( a ) bei jedem <1> weniger sein %Vor%

Aber console.log( a ) gibt immer 100

Neuling zu Javascript hier bitte sei sanft. Danke.

    
Jaideep Singh 01.10.2013, 18:35
quelle

2 Antworten

9

Sie sollten a im Parameter von timer nicht übergeben, um auf die globale Variable a zuzugreifen. Wenn a an die Zeitgeberfunktion übergeben wird, wird der Wert der globalen Variablen verwendet, aber im Zeitgeber ist die Parametervariable lokal für die Zeitgeberfunktion und das Ändern des Werts ändert den Wert der globalen Variablen nicht. Das bedeutet, dass Sie in Ihrem Code zwei Variablen haben, die den Namen a 1 haben, ist global und andere sind lokal für die Timerfunktion und Sie ändern den Wert der lokalen Variablen des Timers.

%Vor%     
Adil 01.10.2013, 18:38
quelle
2

Wenn Sie die Variable als Parameter an eine Funktion übergeben, erstellen Sie eine Closure, die einen neuen Bereich für die Variable erstellt.

Da die Variable global ist, müssen Sie sie nicht übergeben:

Ссылка

%Vor%

Hier ist eine MDN-Seite für Sperrungen .

    
Jason P 01.10.2013 18:40
quelle