Clé d'objet JavaScript sur les supports carrés

Quelqu'un peut-il expliquer comment et pourquoi la méthode ci-dessous d'attribution de clés dans javascript fonctionne?

a = "b" c = {[a]: "d"} 

revenir:

 Object {b: "d"} 

C'est la nouvelle syntaxe de nom de propriété calculée ES2015 (la spécification EcmaScript formellement connue sous le nom de ES6). C'est un raccourci pour l' someObject[someKey] que vous connaissez de ES3 / 5:

 var a = "b" var c = {[a]: "d"} 

Est le sucre syntaxique pour:

 var a = "b" var c = {} c[a] = "d"