【JavaScript】アロー関数の引数で分割代入をする
Reactでよく使われるアロー関数の引数で分割代入を行うパターンを解説する。
まずは分割代入の復習から
分割代入はオブジェクトのキーと値をオブジェクトの外に出して変数として使えるようにすること。
英語名はObject destructuring
で、その名の通りオブジェクトを破壊して値を取り出す、といったイメージである。オブジェクトに存在しないキーを指定するとundefined
が格納される。
const person = { name: 'lamp', age: 22, isMan: true } console.log(name, age) // => Uncaught ReferenceError: Cannot access 'name' before initialization" const { name, age, adress } = person console.log(name, age, adress) // => "lamp", 22, undefined
別名をつけて分割代入
キー : 新しい名前
という文法で書く。
const person = { name: 'lamp', age: 22 } const { name: userName, age: userAge } = person console.log(userName, userAge) // => "lamp", 22 console.log(name, age) // => Uncaught ReferenceError: age is not defined"
アロー関数の引数で分割代入
呼び出すときは引数で代入しているプロパティをもったオブジェクトを渡す。
const person = { name: 'lamp', age: 22, isMan: true, money: 36, haveChild: true } const fn = ({ name, age, isMan, ...rest }) => { console.log(name, age, isMan); console.log(rest); } fn(person) // => "lamp", 22, true // => { haveChild: true, money: 36 }
見ての通り、可変調引数rest
には配列ではなくオブジェクトが格納されている。