human
Je ne suis pas sûr si c'est une syntaxe JS spécifique à Mozilla, mais j'ai souvent trouvé des variables déclarées de cette manière, par exemple, dans la documentation de l'add-on SDK :
```var { Hotkey } = require("sdk/hotkeys");
```
et dans divers scripts Javascript de chrome (l'instruction ```let``` est utilisée à la place de ```var```),
```let { classes: Cc, interfaces: Ci, results: Cr, utils: Cu }  = Components;
```
Je trouve cela très déroutant mais je n'arrive pas à trouver de documentation sur ces deux syntaxes, même sur MDN
gpt
Ce sont toutes les deux des fonctionnalités de JavaScript 1.7. La première est une variable de niveau de bloc :

  ```let``` vous permet de déclarer des variables, limitant sa portée au bloc, à l'instruction ou à l'expression sur laquelle elle est utilisée. Cela diffère du mot-clé ```var```, qui définit une variable globalement ou localement à une fonction entière, indépendamment de la portée du bloc.

La deuxième est appelée déstructuration :

  L'affectation par déstructuration permet d'extraire des données à partir de tableaux ou d'objets en utilisant une syntaxe qui reflète la construction des littéraux de tableau et d'objet.
  ...
  Une chose particulièrement utile que vous pouvez faire avec l'affectation par déstructuration est de lire une structure entière en une seule instruction, bien qu'il y ait un certain nombre de choses intéressantes que vous pouvez faire avec elles, comme le montre la section pleine d'exemples qui suit.

Pour ceux qui connaissent Python, c'est similaire à cette syntaxe :
```>>> a, (b, c) = (1, (2, 3))
>>> a, b, c
(1, 2, 3)
```
Le premier extrait de code est une abréviation pour :
```var {Hotkey: Hotkey} = require("sdk/hotkeys");
// Ou
var Hotkey = require("sdk/hotkeys").Hotkey;
```
Vous pouvez réécrire le deuxième extrait de code comme suit :
```let Cc = Components.classes;
let Ci = Components.interfaces;
let Cr = Components.results;
let Cu = Components.utils;
```