As others have said, you’re missing semicolons. But…
Can anyone explain?
There are no semicolons automatically inserted between your lines to separate the “two” statements, because it is valid as a single statement. It is parsed (and evaluated) as
let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);
wherein
[a, b] = …;
is a destructuring assignment as expected(… = ['BB', 'C'])
is an assignment expression assigning the array to the left hand side, and evaluating to the array['A', 'B'][…]
is a property reference on an array literal(b, c)
is using the comma operator, evaluating toc
(which isundefined
)
If you want to omit semicolons and let them be automatically inserted where ever possible needed, you will need to put one at the start of every line that begins with (
, [
, /
, +
, -
or `
.