-1
  var [a,b] = list
  console.log("a ",a)    // a = 1
  console.log("b ",b)    // b = 2

  [a,b] = [b,a]

  console.log("a ",a)    // a = 2
  console.log("b ",b)    // b = 1

VM247:3 a 1 VM247:4 b 2 VM247:6 Uncaught TypeError: Cannot set property '2' of undefined at :6:9

1 Answers1

2

You are missing semicolons in your code due to which the compilation is affected

console.log("b ",b)    // b = 2

[a,b] = [b,a]

is treated as

console.log("b ",b)[a,b] = [b,a]    // b = 2

i.e it tries to access a key from console.log return value which isn't defined

Working demo

var list=["Hello", "World"];
var [a,b] = list;
  console.log("a ",a);    // a = 1
  console.log("b ",b);    // b = 2

  [a,b] = [b,a];

  console.log("a ",a)    // a = 2
  console.log("b ",b)    // b = 1
Shubham Khatri
  • 211,155
  • 45
  • 305
  • 318