2012-03-30 11 views
4

Ich bin mir bewusst, dass die meisten gängige Praxis var a,b; auf die Spitze zu setzen wäre, aber ich möchte alle möglichen Zeichen extrahieren (nach dem Einschalten JS uglify ausgeführt wird), und es scheint, dass sie nicht löschen unnötige var InitialisierungKorrekte Art der Initialisierung von Vars auf diesen Fällen?

I wenn eine der folgenden Bedingungen wissen wollen, wird zu Problemen führen und die

Fall 1 empfohlen:

if(condition){ 
    var a=-1; 
    var b="++"; 
}else{ 
    var a=1; 
    var b="--"; 
} 

Fall 2:

if(condition){ 
    var a=-1; 
    var b="++"; 
}else{ 
    a=1; 
    b="--"; 
} 

Fall 3:

if(condition){ 
    a=-1; 
    b="++"; 
}else{ 
    var a=1; 
    var b="--"; 
} 
+3

hängt davon ab, welche Art von Bereich Sie wollen. – c0deNinja

+1

Ich bin mir nicht 100% sicher, aber würden die Zeilen ohne 'var' keine globalen Variablen erzeugen? –

+1

planen Sie, die Variablen a und b außerhalb der if-Anweisung zu verwenden? – c0deNinja

Antwort

4

Es spielt keine Rolle, da JavaScript Funktionsumfang hat, nicht lexikalischen Bereich.

Sie können als jede var ...; daran denken Anweisung am Anfang der Funktion abgezweigt oben wird in sie ist. (Das ist, was ich tue, zumindest.)

ich den Code als

schreiben würde
var a, b; 
if(condition) { 
    a = -1; 
    b = "++"; 
} else { 
    a = 1; 
    b = "--"; 
} 
+0

es scheint, dass der Link von Wiseguy dieses wahre http: // stackoverflow bewiesen.com/questions/6964895/javascript-variable-scope-in-der-wenn-statement – Yim

+0

Ich änderte die akzeptierte ans, weil deine sagt eigentlich "ob, wenn es wichtig ist oder nicht", während die vorherige akzeptiert und nur sagte "was ist zu empfehlen" (Es ist mir wirklich egal, ob Best Practices für verkleinerte Versionen vorliegen) und "Was verursacht Globals?" (Off-Topic, da meine Beispiele nicht der Fall sind) – Yim

7

Dies ist so, wie es sein sollte:

var a,b; 

if(condition) 
{ 
    a = -1; 
    b = "++"; 
} 
else 
{ 
    a = 1; 
    b = "--" 
} 

Variablen sollten immer mit dem Schlüsselwort var an der Spitze der Funktion deklariert werden. Der Gültigkeitsbereich der Variablen liegt auf der Funktionsebene, und die Verwendung von var macht sie zu einer globalen Variablen. Wenn Sie es oben angeben, stellen Sie sicher, dass Sie wissen, dass der Bereich für die gesamte Funktion ist (und es ist sowieso). Wenn also ein anderer Programmierer es betrachtet und nicht weiß, dass der Bereich auf der Funktionsebene ist, wird er nicht verwirrt und denke, der Umfang ist nur in der Bedingung.

+0

Sorry, Sie haben wahrscheinlich nicht gelesen meine letzte Bearbeitung. Ich möchte jedes mögliche Zeichen extrahieren, nachdem man – Yim

+2

verkleinert hat Wenn Sie nicht var benutzen, wird es eine globale Variable verursachen. Es löscht sie nicht, weil sie notwendig sind. – kemiller2002

+0

nur eine letzte Sache, warum ist das so, wenn ich 'var hi = 1;' auf beiden 'if/else' hinzufüge, kann ich darauf außerhalb des' if/else' zugreifen? – Yim

Verwandte Themen