| [ 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 block-skopierte lokale Variablen. Der Wert einer Konstante kann nicht durch Zuweisung mit dem Zuweisungsoperator 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 legaler JavaScript-Bezeichner oder ein Destructuring-Bindungsmuster sein.
valueNAnfangswert der Variablen. Es kann jeder legale Ausdruck sein.
Die const-Deklaration ist sehr hnlich zu let:
const-Deklarationen sind auf Blcke sowie auf Funktionen beschrnkt.
const-Deklarationen knnen nur nach dem Erreichen des Deklarationsortes zugegriffen werden (siehe temporal dead zone). Aus diesem Grund werden const-Deklarationen hufig als nicht-hoisted angesehen.
const-Deklarationen erstellen keine Eigenschaften auf globalThis, wenn sie auf oberster Ebene eines Skripts deklariert werden.
const-Deklarationen knnen nicht durch eine andere Deklaration im selben Gltigkeitsbereich erneut deklariert werden.
const beginnen Deklarationen, nicht _Anweisungen. Das bedeutet, dass Sie keine alleinstehende const-Deklaration als Krper eines Blocks verwenden knnen (was sinnvoll ist, da es keine Mglichkeit 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 seinen Wert in derselben Deklaration angeben. (Das macht Sinn, da er spter nicht gendert werden kann.)
const FOO; // SyntaxError: Missing initializer in const declaration
Die const-Deklaration erstellt einen unvernderlichen Verweis auf einen Wert. Das bedeutet nicht, dass der von ihr gehaltene Wert unvernderlich ist lediglich, dass der Variablenbezeichner nicht neu zugewiesen werden kann. Im Falle eines Objekts bedeutet dies beispielsweise, dass der Inhalt des Objekts (z.B. seine Eigenschaften) verndert werden kann. Sie sollten const-Deklarationen verstehen als "erstellen Sie eine Variable, deren Identitt konstant bleibt", nicht "deren Wert konstant bleibt" oder, "erstellen Sie unvernderliche Bindungen", nicht "unvernderliche Werte".
Viele Stilrichtlinien (einschlielich der MDN-Richtlinien) empfehlen die Verwendung von const anstelle von let, wann immer eine Variable in ihrem Gltigkeitsbereich nicht neu zugewiesen wird. Dies macht die Absicht deutlich, dass sich der Typ einer Variablen (oder der Wert, im Fall eines primitiven Werts) niemals ndern kann. Andere bevorzugen mglicherweise let fr Nicht-Primitive, die mutiert werden.
Die Liste, die dem const-Schlsselwort folgt, wird als Bindungsliste bezeichnet und ist durch Kommas getrennt, wobei die Kommas keine Komma-Operatoren sind und die =-Zeichen keine Zuweisungsoperatoren sind. Initialisierer von spteren Variablen knnen sich auf frhere Variablen in der Liste beziehen.
Konstanten knnen mit Gro- oder Kleinschreibung deklariert werden, aber eine hufige Konvention ist die Verwendung von reinen Grobuchstaben, insbesondere fr primitive Werte, 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 der Block-Skopierung 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. Ein Versuch, das Objekt zu berschreiben, wirft einen Fehler "Assignment to constant variable".
const MY_OBJECT = { key: "value" };
MY_OBJECT = { OTHER_KEY: "value" };
Jedoch sind Objekt-Schlssel 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 wirft einen Fehler "Assignment to constant variable".
const MY_ARRAY = [];
MY_ARRAY = ["B"];
Dennoch ist es mglich, Elemente in das Array zu schieben und es somit zu verndern.
MY_ARRAY.push("A"); // ["A"]
Die linke Seite jedes = kann auch ein Bindungsmuster sein. Dies ermglicht das Erstellen 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 |