Javascript re-assign let variable with destructuring

Phil Mok picture Phil Mok · Feb 9, 2018 · Viewed 10k times · Source

In my React app I am using airbnb's eslint style guide which will throw an error if I do not use destructuing.

In the situation below, I first use let to assign the two variables latitude and longitude to the coordinates of the first item in an array of location objects. Then I try to use destructuring to re-assign their values if the user has given me access to their location.

let latitude = locations[0].coordinates[1];
let longitude = locations[0].coordinates[0];

if (props.userLocation.coords) {
  // doesn't work - unexpected token
  { latitude, longitude } = props.userLocation.coords;

  // causes linting errors
  // latitude = props.userLocation.coords.latitude;
  // longitude = props.userLocation.coords.longitude;
}

Destructuring inside the if statement causes an unexpected token error.

Re-assigning the variables the old fashioned way causes an ESlint: Use object destructuring error.

Answer

Jonas Wilms picture Jonas Wilms · Feb 9, 2018
 ({ latitude, longitude } = props.userLocation.coords);

Destructuring needs to be either after a let, const or var declaration or it needs to be in an expression context to distinguish it from a block statement.