Dichiarazione costante con blocco

Recentemente stavo esaminando i sorgenti SDK di Add-on Builder per Firefox e sono incappato in dichiarazioni costanti di questo tipo:

const { getCodeForKey, toJSON } = require("../../keyboard/utils"); 

Sono riuscito a trovare informazioni sui moduli CommonJS , ma ho lasciato una parte di questo incarico confondendomi un po ‘, dal momento che deve essere specifico per la lingua e su Google non ho potuto fare nulla.

Qualcuno può indicarmi qualche specifica / bozza che spiega cosa sta succedendo qui?

Questo è un compito destrutturante , qualcosa che è attualmente implementato solo dal motore JavaScript SpiderMonkey che viene utilizzato da Firefox. Ecco come funziona con gli array:

 // Destructuring assignment [a, b] = foo; // Equivalent code a = foo[0]; b = foo[1]; 

Ed ecco come funziona con gli oggetti:

 // Destructuring assignment {a, b} = foo; // Equivalent code a = foo.a; b = foo.b; 

Un esempio leggermente più elaborato:

 // Destructuring assignment {name: a, address: {line1: b}} = foo; // Equivalent code a = foo.name; b = foo.address.line1; 

Quindi il tuo esempio di codice è equivalente a:

 var utilsExports = require("../../keyboard/utils"); const getCodeForKey = utilsExports.getCodeForKey; const toJSON = utilsExports.toJSON; 

È semplicemente un modo più conveniente per scriverlo.