2013-05-31 6 views
5

Was ist eine allgemeine Lösung zu beheben Uncaught ReferenceError.Fix Uncaught ReferenceError

Ich erstelle eine Funktion, um sicherzustellen, dass der Debugging-Code in Produktion geht. Es kann jedoch Fälle geben, in denen eine Variable nicht existiert, aber der Debugging-Code noch existiert. In diesem Fall sollte es die js nicht anhalten.

function debug(data, type){ 
    if(type == 'alert' && mode !== 'production'){ 
     alert(data); 
    } 
    else if(type == 'halt' && mode !== 'production'){ 
     debugger; 
    } 
    else{ 
     console.debug(data); 
    } 
} 

debug(xyz) //xyz doesn't exists 
+8

'debug (typeof xyz ===" undefiniert "? Undefined: xyz);' vielleicht? – Ian

+0

Sie könnten ein Makro verwenden ... oh, warte. –

+3

Warum möchten Sie Ihren Debugging-Code in der Produktion ausführen? –

Antwort

2

Sie sollten vermeiden, Debug-Code in der Produktion auszuführen.

Am besten ist ein Build-Prozess, der es entfernt, aber ein einfaches Flag, das Ihre Debug-Aufrufe umschließt, funktioniert auch.

window.DEBUG = true; 

//... 

if (DEBUG) { 
    debug(xyz) //xyz doesn't exist... and it won't matter when DEBUG === false 
} 

Dies wird sauberer als das Testen für nicht deklarierte Variablen überall sein.

Schließlich ist ein Teil des Debuggen zufälligen Zugriff auf nicht deklarierte Variablen zu finden. Beim Debuggen sollten wir diese ReferenceErrors also sehen, damit wir sie beheben können.

0
try{ 
if(Debug){ 
    debug(data,code) 
} 
} 
catch{ 
// swallow or do whatever you want 
} 
Verwandte Themen