web-dev-qa-db-fra.com

Que signifie {accolades} autour du nom de la variable javascript

[~ # ~] modifier [~ # ~] Après avoir jeté un œil à JSHint, j'ai trouvé cette expression ' de déstructuration' est disponible dans ES6 (utiliser l'option esnext) ou les extensions Mozilla JS (utiliser moz) et this mais après l'avoir lu, je ne comprends toujours pas pourquoi il est utilisé

J'ai rencontré le code suivant sur MDN

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

Que font les accolades de la deuxième ligne et pourquoi sont-elles utilisées? Pourquoi n'y a-t-il pas d'accolades sur la première ligne?

135
Georgi Georgiev

C’est ce qu’on appelle affectation de déstructuration , et il s’agit d’une nouvelle fonctionnalité de JavaScript 1.7 (et ECMAScript 6 ) (actuellement disponible uniquement dans les versions précédentes). Moteur JavaScript FireFox.) En gros, cela se traduirait par:

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

Cela semble idiot dans cet exemple, car un seul élément est attribué. Cependant, vous pourriez utiliser ce modèle pour affecter plusieurs variables à la fois:

{x, y} = foo;

Est l'équivalent de:

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

Ceci peut également être utilisé pour les tableaux. Par exemple, vous pouvez facilement échanger deux valeurs sans utiliser de variable temporaire:

var a = 1;
var b = 3;

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

La prise en charge du navigateur peut être suivie à l'aide de table de compatibilité de kangax 'ES6 .

186
Mike Christensen