Heim > Web-Frontend > Front-End-Fragen und Antworten > So deklarieren Sie schreibgeschützte Konstanten in es6

So deklarieren Sie schreibgeschützte Konstanten in es6

青灯夜游
Freigeben: 2023-01-11 17:38:56
Original
2034 Leute haben es durchsucht

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.

So deklarieren Sie schreibgeschützte Konstanten in es6

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.
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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;
Nach dem Login kopieren

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
Nach dem Login kopieren

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'];    // 报错
Nach dem Login kopieren

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;
Nach dem Login kopieren

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] );
    }
  });
};
Nach dem Login kopieren

【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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage