JavaScriptの分割代入(Destructuring Assignment)が特に便利なケースとして、最も適切なものはどれか?
解説
正解は「関数の引数から必要なプロパティだけを取り出したいとき」です。分割代入は、オブジェクトや配列の中身を個別の変数に一発で取り出す構文で、特に関数のパラメータ受け取りで威力を発揮します。全要素に同じ値を一括代入 — それはArray.prototype.fill()の出番です。分割代入は「取り出す」操作であって「詰め込む」操作ではありません。全プロパティの削除 — プロパティ削除はdelete演算子や新しいオブジェクトの生成で行います。分割代入は既存オブジェクトを壊しません。型の変換 — Number()やparseInt()の仕事です。分割代入は値の取り出しであって、型を変えたりはしません。背景・仕組み分割代入はES2015で導入されました。オブジェクトと配列の2種類があり、それぞれ書き方が違います。// オブジェクトの分割代入 — プロパティ名で対応 const { name, age } = { name: 'Alice', age: 30, role: 'dev' }; // 配列の分割代入 — 位置で対応 const [first, , third] = [10, 20, 30]; // first = 10, third = 30(2番目はスキップ)オブジェクト分割代入はプロパティ名の一致で値を取り出し、配列の場合はインデックスの位置で対応します。デフォルト値も設定でき、値がundefinedのときに使われます。const { host = 'localhost', port = 3000 } = config;この「存在しなければデフォルト値」という挙動が、設定オブジェクトの処理をとても楽にしてくれます。実務での活用例関数パラメータの受け取り — 引数にオブジェクトを渡す関数で、必要なプロパティだけ抜くのが王道パターンです。何を使うのかがシグネチャを見るだけで分かるので、可読性が上がります。function createUser({ name, email, role = 'member' }) { // name, email, role がそのまま使える // 呼び出し元: createUser({ name: 'Bob', email: 'bob@example.com' }) }ReactのPropsやHooks — const { data, error, isLoading } = useSWR('/api/users')のように、戻り値から必要な値だけ取り出すのは日常茶飯事です。変数のスワップ — 地味に便利なのが2変数の入れ替えです。一時変数が不要になります。let a = 1, b = 2; [a, b] = [b, a]; // a = 2, b = 1レスト構文との組み合わせ — 特定のプロパティだけ抜いて「残り全部」を別変数にまとめる、という使い方も実務で頻出します。const { password, ...safeUser } = user; // safeUserにはpassword以外の全プロパティが入るこのパターンはAPIレスポンスから機密情報を除外してフロントに返す場面で重宝します。