1. ホーム
  2. javascript

ES6で動的に命名された変数にデストラクションする方法は?

2023-09-08 01:55:54

質問

次のようなオブジェクトがあるとします。

const user = { 
  id: 42, 
  displayName: "jdoe",
  fullName: { 
      firstName: "John",
      lastName: "Doe"
  }
};

そして idfullName .

次のようにします。

const { id, fullName } = user

楽勝でしょう?

という別の変数の値に基づいて再構築を行いたい場合を考えてみましょう。 fields .

const fields = [ 'id', 'fullName' ]

さて、私の質問は: どのようにしてキーの配列に基づいたデストラクチャリングを行うことができるのでしょうか?

恥ずかしながら下記を試してみましたが、成功しませんでした。

let {[{...fields}]} = user そして let {[...fields]} = user . このような方法はないのでしょうか?

ありがとうございます。

どのように解決するのですか?

短い答え:不可能であり、これからも不可能でしょう。

この背後にある理由: ブロックスコープに新しい動的な名前の変数を導入することになり、事実上、動的な eval となり、パフォーマンスの最適化ができなくなるからです。動的な eval は、常に非常に危険であるとみなされ、ES5 のストリクトモードから削除されました。

さらに、それはコードの匂いになります - 未定義の変数を参照することは throws ReferenceError を投げるので、そのような動的なスコープを安全に処理するために、より多くの定型的なコードが必要になります。