Hi, Tolonath!
Die "Sache mit den Variablen" nennt sich übrigens "Scope" und beschreibt, was der Javascript-Interpreter macht, wenn ihm ein Variablennamen unterkommt:
Am Anfang des Scripts befindet sich der Interpreter im globalen Scope (bezogen auf window), daher hat var keine Auswirkungen:
var test='global';
test2='global';
Eine Funktion (auch wenn sie anonym bleiben will) hat ihren eigenen Scope:
(function(){
// test == 'global'
test='global überschrieben';
// test == 'global überschrieben'
var test='lokal';
// test == 'lokal'
})();
// test = 'global überschrieben'
Der JavaScript-Interpreter sucht immer zuerst im lokalen und dann im globalen Scope. Deswegen ist in Deinem Beispiel c auch nicht innerhalb der Funktion, in der ein Fehler auftritt, definiert.
Sobald Du Scopes begriffen hast, empfehle ich einen Blick auf die Objektorientierung in Javascript, insbesondere das Konzept von "this" (das gegenwärtige Objekt), "new" (erstelle ein neues Abbild des Prototyp-Objekts) und "prototype" (definiere prototypische Eigenschaften, die dynamisch vererbt werden, also auch nachdem zig Objekte mit "new" erschaffen wurden, mit einem Schritt geändert werden können).
(...) Oder bin ich hier doch im falschem Film? ö.ö
http://aktuell.de.selfhtml.org/artikel/humor/suchmaschinen/index.htm#
Ganz unten auf der Seite steht doch extra: SelfHTML > Artikel > Humor...
Gruß, LX
RFC 2324, Satz 7 (Sicherheit): Jeder, der zwischen meinem Kaffee und mir steht, gilt als unsicher.