We can extract multiple values from an object or array and assign them to variables simultaneously.

    Destructuring objects

    Destructuring arrays

    Destructuring function arguments

    Advanced destructuring

    We can also nest and rename destructured variables and supply default values.

    The rest syntax ... collects remaining values. Rest is roughly the inverse of spread.