2016-10-09 4 views
1

Während ich die Variable starttime ohne das Schlüsselwort var definiere und damit global gemacht werde, gibt starttime in der Konsole undefined aus.Javascript: Während die Variable im globalen Gültigkeitsbereich deklariert ist, bleibt sie innerhalb der Funktion undefiniert

starttime = new Date(); 

setInterval(function(starttime){ 
    getTimeElapsed(starttime); 
}, 1000); 

Wie kann ich die starttime Variable innerhalb der Funktion zugreifen?

+2

zwingende Nicht in den Funktionsargumente wäre ein Anfang, denke ich. – Tomalak

+1

Die Definition in der Funktionssignatur bedeutet, wenn das Timeout die Funktion aufruft, wird 'starttime' in diesem Bereich auf undefiniert gesetzt. Entfernen Sie den Variablennamen aus der Funktionssignatur. – rockerest

Antwort

2

Sie haben zwei Variablen namens starttime.

Ein global, implizit hier erklärt:

starttime = new Date(); 

und eine lokale, hier erklärt:

function(starttime){ 

Da Sie nicht über die lokale Version verwenden Der beste Weg ist diese Erklärung zu entfernen.

setInterval(function(){ 

Alternativ explizit den globalen Zugang:

getTimeElapsed(window.starttime); 
3

könnten Sie versuchen, die folgenden:

starttime = new Date(); 

setInterval(function(){ 
    getTimeElapsed(starttime); 
}, 1000); 

Jetzt greifen Sie auf die globale starttime Variable deklariert. In Ihrem Code haben Sie auf eine undefinierte Variable zugegriffen. Warum? Ihre Funktion hatte ein Argument, das Sie nie angenommen haben. Der Wert war also undefiniert.

Verwandte Themen