Windows-Apps
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern
Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Informationen
Das angeforderte Thema wird unten angezeigt. Es ist jedoch nicht in dieser Bibliothek vorhanden.

Variablenbereich (JavaScript)

 

JavaScript umfasst zwei Bereiche: global und lokal.  Eine außerhalb einer Funktionsdefinition deklarierte Variable ist eine globale Variable, und ihr Wert kann im gesamten Programm abgerufen und verändert werden.  Eine innerhalb einer Funktionsdefinition deklarierte Variable ist eine lokale Variable.  Sie wird bei jeder Ausführung der Funktion erstellt und anschließend zerstört. Ein Zugriff auf die Variable von irgendwelchem Code außerhalb der Funktion ist nicht möglich.  JavaScript unterstützt keinen Blockbereich (bei dem ein Satz geschweifter Klammern {. . .} einen neuen Bereich definiert), außer im Sonderfall von Blockbereichsvariablen.  

Eine lokale Variable kann denselben Namen wie eine globale Variable haben, ist von dieser jedoch völlig unabhängig. Eine Wertänderung in einer Variablen hat keinen Einfluss auf die andere.  Innerhalb der Funktion, in der die lokale Variable deklariert wurde, hat nur diese Version eine Bedeutung.  

// Global definition of aCentaur.
var aCentaur = "a horse with rider,";

// A local aCentaur variable is declared in this function.
function antiquities(){

   var aCentaur = "A centaur is probably a mounted Scythian warrior";
}

antiquities();
aCentaur += " as seen from a distance by a naive innocent.";

document.write(aCentaur);

// Output: "a horse with rider, as seen from a distance by a naive innocent."

In JavaScript werden Variablen so ausgewertet, als wären sie am Anfang des Bereichs, in dem sie vorhanden sind, deklariert worden.  Dies kann manchmal zu unerwartetem Verhalten führen, wie hier gezeigt wird.  

var aNumber = 100;
tweak();

function tweak(){

    // This prints "undefined", because aNumber is also defined locally below.
    document.write(aNumber);

    if (false)
    {
        var aNumber = 123;  
    }
}

Wenn JavaScript eine Funktion ausführt, wird zuerst nach allen Variablendeklarationen gesucht, beispielsweise nach var someVariable;.  Variablen werden mit dem Anfangswert undefined erstellt.  Auch wenn eine Variable mit einem Anfangswert deklariert wird, z. B. var someVariable = "something";, hat sie zuerst den Wert undefined, und sie nimmt nur dann den deklarierten Wert an, wenn die Zeile, die die Deklaration enthält, ausgeführt wird.  

JavaScript verarbeitet alle Variablendeklarationen, bevor Code ausgeführt wird. Daher spielt es keine Rolle, ob sich die Deklaration innerhalb eines bedingten Blocks oder eines anderen Konstrukts befindet.  Sobald JavaScript alle Variablen gefunden hat, wird der Code in der Funktion ausgeführt.  Wenn eine Variable implizit innerhalb einer Funktion deklariert wird (d. h. wenn sie auf der linken Seite eines Zuweisungsausdrucks steht, aber nicht mit var deklariert worden ist), dann wird sie als globale Variable erstellt.  

In JavaScript speichert eine interne (geschachtelte) Funktion Verweise auf die lokalen Variablen, die im selben Bereich wie die Funktion selbst vorhanden sind, auch nachdem die Funktion zurückgibt.  Dieser Satz von Verweisen wird als Abschluss bezeichnet.  Im folgenden Beispiel gibt der zweite Aufruf zur inneren Funktion dieselbe Meldung ("Hello Bill") aus, wie der erste Aufruf, da der Eingabeparameter für die äußere Funktion, name, eine lokale Variable ist, die im Abschluss für die innere Funktion gespeichert wird.  

function send(name) {
    // Local variable 'name' is stored in the closure
    // for the inner function.
    return function () {
        sendHi(name);
    }
}

function sendHi(msg) {
    console.log('Hello ' + msg);
}

var func = send('Bill');
func();
// Output:
// Hello Bill
sendHi('Pete');
// Output:
// Hello Pete
func();
// Output:
// Hello Bill

Internet Explorer 11 stellt die Unterstützung von let und const bereit, die Blockbereichsvariablen sind.  Für diese Variablen definieren die geschweiften Klammern {. . .} einen neuen Geltungsbereich.  Wenn Sie eine dieser Variablen auf einen bestimmten Wert festlegen, gilt der Wert nur für den Bereich, in dem er festgelegt wird.  

Das folgende Beispiel veranschaulicht die Verwendung von let und der Blockbereichsdefinition.

System_CAPS_noteHinweis

Der folgende Code wird im Standardmodus von Internet Explorer 11 und höher unterstützt.

let x = 10;
var y = 10;
{
    let x = 5;
    var y = 5;
    {
        let x = 2;
        var y = 2;
        document.write("x: " + x + "<br/>");
        document.write("y: " + y + "<br/>");
        // Output:
        // x: 2
        // y: 2
    }
    document.write("x: " + x + "<br/>");
    document.write("y: " + y + "<br/>");
    // Output:
    // x: 5
    // y: 2
}

document.write("x: " + x + "<br/>");
document.write("y: " + y + "<br/>");
// Output:
// x: 10
// y: 2
Anzeigen:
© 2017 Microsoft