In es6 können Sie das Schlüsselwort const verwenden, um schreibgeschützte Konstanten zu deklarieren. Die Syntax lautet „const konstanter Name = konstanter Wert;“. Nach der Deklaration muss die Konstante initialisiert werden und der initialisierte Wert kann nicht geändert werden. Als const deklarierte Konstanten gehören zum Blockbereich und unterliegen der „temporären Totzone“. Sie erstellen keine globalen Eigenschaften im Fenster und können nicht neu zugewiesen oder neu deklariert werden.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.
In es6 können Sie das Schlüsselwort const verwenden, um schreibgeschützte Konstanten zu deklarieren.
es6 const-Schlüsselwort
const deklariert eine schreibgeschützte Konstante. Nach der Deklaration muss eine Konstante initialisiert werden und der initialisierte Wert kann nicht geändert werden.
const PI = 3.1415; PI // 3.1415 PI = 3; // TypeError: Assignment to constant variable.
const-Konstanten befolgen die folgenden Regeln:
gehört zum Blockbereich.
Vorbehaltlich der „vorübergehenden Totzone“.
Es werden keine globalen Eigenschaften im Fenster erstellt.
Nicht weiterverteilbar.
kann nicht angepasst werden.
const Sobald eine Variable deklariert ist, muss sie sofort initialisiert werden.
const foo; // SyntaxError: Missing initializer in const declaration
Der obige Code gibt an, dass für const ein Fehler gemeldet wird, wenn Sie nur deklarieren, ohne einen Wert zuzuweisen.
Der Gültigkeitsbereich von const ist derselbe wie der let-Befehl: Er ist nur innerhalb des Blockebenenbereichs gültig, in dem er deklariert ist.
if (true) { const MAX = 5; } MAX // Uncaught ReferenceError: MAX is not defined
Die vom const-Befehl deklarierten Konstanten werden ebenfalls nicht hochgestuft. Es gibt auch eine vorübergehende Totzone und kann nur nach der deklarierten Position verwendet werden.
if (true) { console.log(MAX); // ReferenceError const MAX = 5; }
Der obige Code wird aufgerufen, bevor die Konstante MAX deklariert wird, und ein Fehler wird gemeldet.
Die von const deklarierte Konstante kann nicht wie let wiederholt deklariert werden.
var message = "Hello!"; let age = 25; // 以下两行都会报错 const message = "Goodbye!"; const age = 30;
Das Wesen von const
const garantiert tatsächlich, dass nicht der Wert der Variablen nicht geändert werden kann, sondern dass die in der Speicheradresse gespeicherten Daten, auf die die Variable zeigt, nicht geändert werden können. Bei einfachen Datentypen (numerische Werte, Zeichenfolgen, boolesche Werte) wird der Wert an der Speicheradresse gespeichert, auf die die Variable zeigt, und entspricht daher einer Konstante. Bei zusammengesetzten Datentypen (hauptsächlich Objekten und Arrays) speichert die Speicheradresse, auf die die Variable zeigt, nur einen Zeiger auf die tatsächlichen Daten. Const kann nur garantieren, dass dieser Zeiger fest ist (dh er zeigt immer auf eine andere feste Adresse). Ob die Datenstruktur, auf die es verweist, variabel ist, liegt völlig außer Kontrolle. Daher müssen Sie sehr vorsichtig sein, wenn Sie ein Objekt als Konstante deklarieren.
const foo = {}; // 为 foo 添加一个属性,可以成功 foo.prop = 123; foo.prop // 123 // 将 foo 指向另一个对象,就会报错 foo = {}; // TypeError: "foo" is read-only
Im obigen Code speichert die Konstante foo eine Adresse, die auf ein Objekt zeigt. Das Einzige, was unveränderlich ist, ist diese Adresse, das heißt, Sie können foo nicht auf eine andere Adresse verweisen, aber das Objekt selbst ist veränderbar, sodass Sie ihm immer noch neue Eigenschaften hinzufügen können.
Hier ist ein weiteres Beispiel.
const a = []; a.push('Hello'); // 可执行 a.length = 0; // 可执行 a = ['Dave']; // 报错
Im obigen Code ist die Konstante a ein Array. Das Array selbst ist beschreibbar, aber wenn a ein anderes Array zugewiesen wird, wird ein Fehler gemeldet.
Wenn Sie das Objekt wirklich einfrieren möchten, sollten Sie die Methode Object.freeze verwenden.
const foo = Object.freeze({}); // 常规模式时,下面一行不起作用; // 严格模式时,该行会报错 foo.prop = 123;
Im obigen Code zeigt die Konstante foo auf ein eingefrorenes Objekt, sodass das Hinzufügen neuer Attribute nicht funktioniert und im strikten Modus ein Fehler gemeldet wird.
Zusätzlich zum Einfrieren des Objekts selbst sollten auch die Eigenschaften des Objekts eingefroren werden. Unten finden Sie eine Funktion, die ein Objekt vollständig einfriert.
var constantize = (obj) => { Object.freeze(obj); Object.keys(obj).forEach( (key, i) => { if ( typeof obj[key] === 'object' ) { constantize( obj[key] ); } }); };
【Verwandte Empfehlungen: Javascript-Video-Tutorial, Programmiervideo】
Das obige ist der detaillierte Inhalt vonSo deklarieren Sie schreibgeschützte Konstanten in es6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!