Bütschgi: Warum ist das so?

Beitrag lesen

Hallo

Bin soeben gestolpert. Im folgenden (vereinfachten) Code habe ich erwartet, dass zuerst '0' angezeigt wird – da foo ja lokal definiert ist – dann aber '2', da der Block mit 'var foo' gar nie ausgeführt wird!?

  
var foo = 0;  
function test (bar) {  
 if (bar) {  
  var foo;  
  foo = 1;  
 } else {  
  foo = 2;  
 }  
}  
test(true);  
alert(foo);  
test(false)  
alert(foo);  

Die Zeile var foo wird offenbar in jedem Fall ausgeführt. Wieso ist das so? Was habe ich bis jetzt verpasst – oder bin ich von allen guten Geistern verlassen?

Danke für die Antworten.