Je ne sais pas s'il s'agit d'une syntaxe JS spécifique à Mozilla, mais j'ai souvent trouvé des variables déclarées de cette façon, par exemple, dans la documentation du SDK complémentaire :
var { Hotkey } = require("sdk/hotkeys");
et dans divers Javascript chrome ( let
instruction est utilisée à la place de var
),
let { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
J'ai trouvé cela très déroutant mais je ne peux pas trouver de documentation sur les deux syntaxes, même sur MDN .
Réponses:
Ce sont deux fonctionnalités JavaScript 1.7. La première concerne les variables de niveau bloc :
Le second s'appelle la déstructuration :
Pour ceux qui connaissent Python, c'est similaire à cette syntaxe:
Le premier bloc de code est un raccourci pour:
Vous pouvez réécrire le deuxième bloc de code comme suit:
la source
var { Hotkey }
est équivalent àvar { Hotkey: Hotkey }
. Merci d'avoir localisé la documentation!var Hotkey = require(...).Hotkey
t-il? Ou s'agit-il simplement d'enregistrer les frappes au clavier?Ce que vous regardez est une mission de déstructuration. C'est une forme de correspondance de motifs comme dans Haskell.
À l'aide de l'affectation de déstructuration, vous pouvez extraire des valeurs d'objets et de tableaux et les affecter à des variables nouvellement déclarées à l'aide de la syntaxe littérale d'objet et de tableau. Cela rend le code beaucoup plus succinct.
Par exemple:
Le code ci-dessus est équivalent à:
De même pour les tableaux:
Cela équivaut à:
Vous pouvez également extraire et renommer une propriété d'objet comme suit:
Cela équivaut à:
C'est tout ce qu'on peut en dire.
la source
var {a, b, c} = ascii;
syntaxe.Il s'agit d'une mission destructrice en Javascript et fait partie de la norme ES2015. Il décompresse ou extrait les valeurs des tableaux ou des propriétés des objets en variables distinctes. Par exemple: Destructuration de matrice
// avec déstructuration var [un, deux, trois] = foo
Par exemple: Destructuration d'objets
var o = {p: 42, q: vrai}; var {p, q} = o;
console.log (p); // 42 console.log (q); // vrai
// Assigne de nouveaux noms de variables var {p: foo, q: bar} = o;
console.log (toto); // 42 console.log (barre); // vrai
la source
Il existe une documentation pour la
let
déclaration sur MDN: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/letlet
est similaire àvar
en ce qu'il limite la portée de la variable déclarée. Il vous permet de déclarer une variable à l'intérieur d'unif(){}
bloc (ou d'un autre bloc) et d'avoir cette variable uniquement "visible" à l'intérieur de ce bloc (JavaScript, jusqu'à présent, a une portée de fonction et non une portée de bloc comme la plupart des autres langages). Illet
s'agit donc essentiellement d'une "solution" pour quelque chose avec lequel beaucoup de gens ont des problèmes. Notez que tihs est une fonctionnalité de JavaScript 1.7.Je n'ai rien trouvé sur
{Foo}
.la source
{Foo}
: /{
et}
.