| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/const | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.
Die const-Deklaration deklariert blockweite lokale Variablen. Der Wert einer Konstante kann mit dem Zuweisungsoperator nicht durch Neuzuweisung gendert werden, aber wenn eine Konstante ein Objekt ist, knnen ihre Eigenschaften hinzugefgt, aktualisiert oder entfernt werden.
const number = 42;
try {
number = 99;
} catch (err) {
console.log(err);
// Expected output: TypeError: invalid assignment to const 'number'
// (Note: the exact output may be browser-dependent)
}
console.log(number);
// Expected output: 42
const name1 = value1;
const name1 = value1, name2 = value2;
const name1 = value1, name2 = value2, /* , */ nameN = valueN;
nameNDer Name der zu deklarierenden Variablen. Jeder muss ein gltiger JavaScript-Bezeichner oder ein Destructuring-Bindungsmuster sein.
valueNAnfangswert der Variablen. Es kann ein beliebiger gltiger Ausdruck sein.
Die const-Deklaration ist der let-Deklaration sehr hnlich:
const-Deklarationen sind in Blcken sowie in Funktionen eingeschrnkt.
const-Deklarationen knnen erst nach der Deklarationsstelle aufgerufen werden (siehe temporal dead zone). Aus diesem Grund werden const-Deklarationen hufig als nicht-gehoistet angesehen.
const-Deklarationen erstellen keine Eigenschaften an globalThis, wenn sie auf der obersten Ebene eines Skripts deklariert werden.
const-Deklarationen knnen nicht durch eine andere Deklaration im selben Umfang neu deklariert werden.
const beginnt Deklarationen, keine Anweisungen. Das bedeutet, dass Sie eine einzelne const-Deklaration nicht als Blockkrper verwenden knnen (was sinnvoll ist, da es keinen Weg gibt, auf die Variable zuzugreifen).
if (true) const a = 1; // SyntaxError: Lexical declaration cannot appear in a single-statement context
Ein Initialisierer fr eine Konstante ist erforderlich. Sie mssen ihren Wert in der gleichen Deklaration angeben. (Dies ist sinnvoll, da er spter nicht gendert werden kann.)
const FOO; // SyntaxError: Missing initializer in const declaration
Die const-Deklaration erzeugt eine unvernderliche Referenz auf einen Wert. Es bedeutet nicht, dass der gehaltene Wert unvernderlich ist nur dass der Variablenbezeichner nicht neu zugewiesen werden kann. Wenn der Inhalt zum Beispiel ein Objekt ist, bedeutet dies, dass die Inhalte des Objekts (z.B. seine Eigenschaften) verndert werden knnen. Sie sollten const-Deklarationen verstehen als "eine Variable erstellen, deren Identitt konstant bleibt", nicht "deren Wert konstant bleibt" oder, "unvernderliche Bindings erstellen", nicht "unvernderliche Werte".
Viele Stilrichtlinien (einschlielich der von MDN) empfehlen die Verwendung von const gegenber let, wann immer eine Variable in ihrem Umfang nicht neu zugewiesen wird. Dies macht die Absicht klar, dass der Typ (oder Wert, im Falle eines primitiven Wertes) einer Variable sich niemals ndern kann. Andere bevorzugen mglicherweise let fr Nicht-Primitiva, die mutiert werden.
Die Liste, die dem const-Schlsselwort folgt, wird Bindingsliste genannt und ist durch Kommata getrennt, wobei die Kommata keine Kommaoperatoren und die =-Zeichen keine Zuweisungsoperatoren sind. Initialisierer von spteren Variablen knnen sich in der Liste auf frhere Variablen beziehen.
Konstanten knnen mit Gro- oder Kleinbuchstaben deklariert werden, aber eine bliche Konvention ist die Verwendung von ausschlielich Grobuchstaben, insbesondere fr Primitive, da diese wirklich unvernderlich sind.
// define MY_FAV as a constant and give it the value 7
const MY_FAV = 7;
console.log(`my favorite number is: ${MY_FAV}`);
// Re-assigning to a constant variable throws an error
MY_FAV = 20; // TypeError: Assignment to constant variable
// Redeclaring a constant throws an error
const MY_FAV = 20; // SyntaxError: Identifier 'MY_FAV' has already been declared
var MY_FAV = 20; // SyntaxError: Identifier 'MY_FAV' has already been declared
let MY_FAV = 20; // SyntaxError: Identifier 'MY_FAV' has already been declared
Es ist wichtig, die Natur des Block-Scopings zu beachten.
const MY_FAV = 7;
if (MY_FAV === 7) {
// This is fine because it's in a new block scope
const MY_FAV = 20;
console.log(MY_FAV); // 20
// var declarations are not scoped to blocks so this throws an error
var MY_FAV = 20; // SyntaxError: Identifier 'MY_FAV' has already been declared
}
console.log(MY_FAV); // 7
const funktioniert auch bei Objekten und Arrays. Der Versuch, das Objekt zu berschreiben, fhrt zu einem Fehler "Assignment to constant variable".
const MY_OBJECT = { key: "value" };
MY_OBJECT = { OTHER_KEY: "value" };
Allerdings sind Objektschlssel nicht geschtzt, daher wird die folgende Anweisung ohne Probleme ausgefhrt.
MY_OBJECT.key = "otherValue";
Sie mssten Object.freeze() verwenden, um ein Objekt unvernderlich zu machen.
Dasselbe gilt fr Arrays. Die Zuweisung eines neuen Arrays zur Variable fhrt zu einem Fehler "Assignment to constant variable".
const MY_ARRAY = [];
MY_ARRAY = ["B"];
Dennoch ist es mglich, Elemente in das Array zu pushen und es damit zu verndern.
MY_ARRAY.push("A"); // ["A"]
Die linke Seite jedes = kann auch ein Bindungsmuster sein. Dies ermglicht die Erstellung mehrerer Variablen auf einmal.
const result = /(a+)(b+)(c+)/.exec("aaabcc");
const [, a, b, c] = result;
console.log(a, b, c); // "aaa" "b" "cc"
Fr weitere Informationen siehe Destructuring.
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-let-and-const-declarations |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |