2014-11-19 6 views
5

Lesen und mit den neuen Funktionen Bastelei von ECMAScript angeboten 6.löschen oder überschreiben konstante Variablen in JavaScript Harmonie/ECMAScript 6

Die neue ‚const‘ Anweisung zum Schreiben konstante Variablen ist eine nette Funktion, die Funktionen ein fügt schon interessantes Update.

Die Variable wird als schreibgeschützt erstellt, und wenn sie einmal angegeben wurde, kann sie nicht überschrieben werden.

BEARBEITEN: Ein konsequentes Problem entsteht zum Beispiel, wenn Code auf der Konsole getestet wird. Ein Skript mit einer Const-Definition zweimal auszuführen, würde zu einem Fehler führen und die Ausführung unterbrechen.

Was, wenn ich Freigabe dieses Schlüsselwort möchte? Gibt es eine Möglichkeit, die Variable zu löschen oder zu löschen?

Ich habe in this post gelesen, dass dies tatsächlich ein Problem ist, das die auch var Rechnung beeinflusst, weil die Umgebungen, in denen die Variablen erstellt werden, sind unterschiedlich auf vielen Abstraktionsebene.

Wie ECMAScript 6 beabsichtigen, dieses Problem zu beheben?

+0

Es gibt absolut keinen Grund, eine Konstante zu löschen/löschen, und deshalb ist es in ES6 nicht möglich. Warum willst du das machen? – Bergi

+1

Wenn Sie es ändern möchten, warum würden Sie es "const" an erster Stelle erklären? ECMAScript 6 beabsichtigt nicht, dieses Problem anzugehen, weil "const" "const" ist. Sie können eine andere Variable mit demselben Namen in einem inneren Bereich deklarieren, wenn Sie möchten, indem Sie 'let' verwenden. –

+1

Nun, zum Beispiel, wenn ich einen Code mit der Konsole teste, würde das zweimalige Deklarieren eines const (d. H. Das erneute Ausführen des Skripts) einen Fehler auslösen, der dazu führen könnte, dass die Seite aktualisiert wird und alle zwischengespeicherten Änderungen verloren gehen. Das ist eigentlich der Grund, warum ich auf diese Frage gekommen bin. – Moleskine

Antwort

4

Es ist nicht möglich, Variablen, die mit const deklariert wurden, neu zu definieren.

Jedoch ist const block-scoped. Um das Problem zu beheben Sie beschreiben, wenn einige Code in der Konsole testen alle würden Sie tun müssen, ist Ihr Skript wickeln in { und }:

{ const x = 1; } 
{ const x = 2; } 

Beachten Sie, dass viele Browser, die bereits die const Schlüsselwort noch nicht unterstützen Unterstützung block-scoped Konstanten, so dass das obige Beispiel in Chrome und Firefox fehlschlägt (siehe Kangax's compatibility table für mehr).

+0

Ich sehe, also Sie sagen, dass es nicht direkt möglich ist, aber die Antwort ist Scoping, oder? Macht Sinn. Scheint so, als ob sie sich mit der Einführung von let und const gut um das Scoping kümmern würden. – Moleskine

-3

FYI - const a = {}; var b = new a; a = 33; Ich habe gerade die const 'a' zurück zu einem Var geändert.

+0

sorry ... const work = {}; var dd = arbeiten; dd = 99; Arbeit = 22; es gibt 22 zurück und sollte zurückgeben, was auch immer Sie es einstellen, aber sein Standard wird ein undefiniertes Objekt sein. – davidLeak

+1

Es ist nicht möglich, einen neuen Wert einem 'const' zuzuweisen. Das ist der Sinn eines "const". –