webentwicklung-frage-antwort-db.com.de

Was bedeuten geschweifte Klammern um den Variablennamen von Javascript?

[~ # ~] edit [~ # ~] Nach einem Blick auf JSHint stellte ich fest, dass dieser ' destrukturierende Ausdruck' ist verfügbar in ES6 (benutze esnext Option) oder Mozilla JS Extensions (benutze moz) und this aber nach dem Lesen verstehe ich immer noch nicht warum es benutzt wird

Ich bin auf den folgenden Code gestoßen: MDN

var ui = require("sdk/ui");
var { ActionButton } = require("sdk/ui/button/action");

Was machen die Klammern in der zweiten Zeile und warum werden sie verwendet? Warum stehen in der ersten Zeile keine geschweiften Klammern?

135
Georgi Georgiev

Dies wird als Destrukturierungszuweisung bezeichnet und ist eine neue Funktion von JavaScript 1.7 (und ECMAScript 6 ) FireFox-JavaScript-Engine.) In etwa würde dies folgendermaßen übersetzt:

var ActionButton = require("sdk/ui/button/action").ActionButton;

In diesem Beispiel erscheint es albern, da nur ein Element zugewiesen wird. Mit diesem Muster können Sie jedoch mehrere Variablen gleichzeitig zuweisen:

{x, y} = foo;

Ist das Äquivalent zu:

x = foo.x;
y = foo.y;

Dies kann auch für Arrays verwendet werden. Sie können beispielsweise problemlos zwei Werte austauschen, ohne eine temporäre Variable zu verwenden:

var a = 1;
var b = 3;

[a, b] = [b, a];

Die Browserunterstützung kann mit kangax 'ES6-Kompatibilitätstabelle verfolgt werden.

186