概要:このチュートリアルでは、オブジェクトのプロパティを個々の変数に割り当てるJavaScriptオブジェクトの破棄について学びます。
配列を破壊する方法を学びたい場合は、配列破壊チュートリアルをチェックすることができます。
JavaScriptオブジェクトの分割割り当ての概要
二つのプロパティを持つperson
オブジェクトがあるとします。firstName
とlastName
。ES6より前のバージョンでは、person
オブジェクトのプロパティを変数に割り当てる場合、通常は次のようにします:
Code language: JavaScript (javascript)
ES6では、オブジェクトのプロパティを変数に割り当てる別の方法を提供するオブジェクト分割構文が導入されています:
Code language: JavaScript (javascript)
この例では、firstName
プロパティとlastName
プロパティがそれぞれfName
変数とlName
変数に割り当てられています。この構文では
:
Code language: JavaScript (javascript)
コロンの前の識別子(:
)はオブジェクトのプロパティであり、コロンの後の識別子は変数です。
プロパティ名は、オブジェクトリテラルであろうとオブジェクト分割構文であろうと、常に左側にあることに注意してください。
変数がオブジェクトのプロパティと同じ名前を持つ場合は、次のようにコードをより簡潔にすることができます:
Code language: JavaScript (javascript)
この例では、2つの変数firstName
とlastName
を宣言し、同じステートメント内の変数にpersonオブジェクトのプロパティを割り当てました。
宣言と代入を分離することは可能です。 ただし、変数を括弧で囲む必要があります:
括弧を使用しない場合、JavaScriptエンジンは左側をブロックとして解釈し、構文エラーをスローします。
オブジェクトの分割を使用して変数に存在しないプロパティを割り当てると、変数はundefined
に設定されます。 例えば:
Code language: JavaScript (javascript)
この例では、middleName
プロパティはperson
オブジェクトに存在しないため、middleName
変数はundefined
です。
デフォルト値の設定
オブジェクトのプロパティが存在しない場合、変数にデフォルト値を割り当てることができます。 例えば:
Code language: JavaScript (javascript)
この例では、personオブジェクトにmiddleName
プロパティがない場合、空の文字列をmiddleName
変数に割り当てました。
また、currentAge
プロパティをage
変数にデフォルト値18で割り当てます。
ただし、personオブジェクトにmiddleName
プロパティがある場合、割り当ては通常どおり機能します:
Code language: JavaScript (javascript)
nullオブジェクトの破棄
関数は、いくつかの状況でオブジェクトまたはnullを返すことがあります。 例えば:
Code language: JavaScript (javascript)
そして、あなたはオブジェクトの破壊割り当てを使用します:
Code language: JavaScript (javascript)
コードはaをスローしますTypeError
:
Code language: JavaScript (javascript)
これを回避するには、OR
演算子(||
)を使用して、null
オブジェクトを空のオブジェクトにフォールバックします:
Code language: JavaScript (javascript)
今、エラーは発生しません。 そして、firstName
とlastName
はundefined
になります。
ネストされたオブジェクトの破壊
プロパティとしてname
オブジェクトを持つemployee
オブジェクトがあると仮定します:
Code language: JavaScript (javascript)
次のステートメントは、ネストされたname
オブジェクトのプロパティを個々の変数に分解します:
Code language: JavaScript (javascript)
複数の変数へのプロパティの複数の割り当てを行うことができます:
Code language: JavaScript (javascript)
Destructuring function arguments
personオブジェクトを表示する関数があるとします:
Code language: JavaScript (javascript)
このように関数に渡されたオブジェクト引数を破壊することは可能です:
Code language: JavaScript (javascript)
特にargumentオブジェクトの多くのプロパティを使用する場合は、あまり冗長に見えません。 この手法はReactでよく使用されます。
概要
- オブジェクト分割は、デフォルトで同じ名前の変数にオブジェクトのプロパティを割り当てます。
- このチュートリアルは役に立ちましたか?