癖のあるオブジェクト分割代入「{ hoge: value } = obj」

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
以下構文で「valueという変数を宣言し、その中に右辺オブジェクトのhoge要素の内容を代入する」という操作が行える。

var obj = { hoge: "hogehoge", fuga: "fugafuga" }; 
var { hoge: value } = obj;
console.log(value); // "hogehoge"

単独で見ると理解し辛い構文だが、まず以下のような「hoge,fugaという変数を宣言し、その中に右辺オブジェクトの該当要素名の内容を代入する」という構文があって、その発展形だと理解するとわかりやすい。

var obj = { hoge: "hogehoge", fuga: "fugafuga" }; 
var { hoge, fuga } = obj;
console.log(hoge); // "hogehoge"
console.log(fuga); // "fugafuga"



ちなみにこvar, let, constの宣言無しに使うと構文エラーになるが、括弧をつけてやると正常に動作する。

var value = "";
{ hoge: value } = { hoge: "fuga" }; // これはエラー
({ hoge: value } = { hoge: "fuga" }); // これは動作する
console.log(value); // "fuga"