2016-09-15 3 views
0

Ich habe einen Timer:setInterval global var nicht definiert

timer: function(duration, display) { 
    var timer = duration, minutes, seconds; 

    var interval = setInterval(function() { 
     minutes = parseInt(timer/60, 10); 
     seconds = parseInt(timer % 60, 10); 

     minutes = minutes < 10 ? "0" + minutes : minutes; 
     seconds = seconds < 10 ? "0" + seconds : seconds; 

     display.text(minutes + ":" + seconds); 
     display.addClass('timed sticky'); 

     if (--timer < 0) { 
      $('.btn.next').click(); 
     } 
    }, 1000); 
} 

Wenn ich var interval = ... verwenden, es funktioniert. Aber wenn ich es global ohne var setze, sagt es Uncaught ReferenceError: interval is not defined. Irgendeine Idee warum?

+1

Sind Sie im Strict-Modus? Dann brauchen Sie eine 'var interval; -Deklaration außerhalb der Funktion. – Barmar

+0

@Barmar - ja, das scheint es zu sein. Das erste Mal, dass ich React benutze, das ist eine Standard-Sache – frosty

Antwort

0

Da Sie im strikten Modus ausgeführt werden.

function strictMode() { 
 
    'use strict'; 
 
    strictInterval = 1; 
 
    console.log('strict mode'); 
 
} 
 

 
function looseMode() { 
 
    looseInterval = 1; 
 
    console.log('loose mode'); 
 
} 
 

 
looseMode(); 
 
strictMode();

dass der Mangel an var Verwendung ist sowieso eine schlechte Idee, eine globale Variable zu erstellen. Wenn Sie auf eine Variable in mehreren Gültigkeitsbereichen zugreifen möchten, deklarieren Sie sie außerhalb dieser Gültigkeitsbereiche oder stellen Sie einen Mechanismus für die gemeinsame Nutzung von Daten zwischen diesen Gültigkeitsbereichen bereit.

// Declared outside of both scopes 
 
var shared = 1; 
 
function a() { 
 
    console.log(shared); 
 
    shared = 2; 
 
} 
 

 
function b() { 
 
    console.log(shared); 
 
    shared = 3; 
 
} 
 

 
a(); 
 
b(); 
 
a();

Verwandte Themen