revo: Variablenscopes

Hallo,

ich habe ein Anfängerproblem mit JavaScript.
Aus anderen Programmiersprachen bin ich gewöhnt, dass Variablenscopes so beendet werden:

  
var y = 1;  
{ var x = 1; }  
alert(y);  
alert(x);  

In diesem Falle würde ich erwarten, dass y beim Aufruf druch alert() den Wert 1 enthalten würde und x undefined wäre.
Stattdessen hat auch x noch den Wert 1.

Wie löscht man eine Variable / beendet ihren Scope?

  1. Hallo,

    Aus anderen Programmiersprachen bin ich gewöhnt, dass Variablenscopes so beendet werden:

    Scopes werden in JavaScript durch Funktionen erzeugt, durch nichts anderes.
    Ein Block erzeugt keinen eigenen Scope.
    Block-Scopes gibt es nur in einer bisher proprietären Gecko-Erweiterung.

    Wie löscht man eine Variable / beendet ihren Scope?

    Variablen löschen kannst du mit delete, wenn du Scopes erzeugen willst, gebrauche Funktionen.

    (function () {
       var bla = "nur i.d. Funktion verfügbar";
    })();

    Mathias

    1. Variablen löschen kannst du mit delete

      genau das, was ich suche. danke.

      gebrauche funktionen

      das ist in meinem fall kaum möglich, weil ich variablen, die ich im konstruktor einer klasse benötige, nicht später als membervariablen benötige. oder kann der konstruktor selbst eine funktion sein?

      1. gruss revo,

        gebrauche funktionen

        das ist in meinem fall kaum möglich, weil ich variablen, die ich im
        konstruktor einer klasse benötige, nicht später als membervariablen
        benötige. oder kann der konstruktor selbst eine funktion sein?

        wenn Du so fragst, muss man spitzfindig bemerken, dass ein konstruktor
        in ECMA 262 immer eine funktion sein wird. Du meinst aber sicherlich,
        ob ein einziges funktionales konstrukt sowohl objekte instanziieren
        als auch z.b. nur typen wandeln kann? - ja das geht:

        Google Groups :: de.comp.lang.javascript : Funktion nicht als Konstruktor
        SELFHTML Forum : Zuweisung zerstört Number-Objekt ...

        so long - peterS. - pseliger@gmx.net

        --
        »Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
        Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
        ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]