JavaScriptで括弧で囲った変数に値を代入しようとすると「分割代入」という動作になります。
分割代入では配列から値を取り出して、もしくはオブジェクトからプロパティを取り出して個々の変数に値を代入することができます。
let a, b, c; [a, b, c] = [1, 2, 3]; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3
さらに変数に”…”を付けて残余パターンを使うと、残りの部分を一度に代入することができます。
let a, rest; [a, ...rest] = [1, 2, 3]; console.log(a); // 1 console.log(rest); // [2,3]
このとき「最後尾の要素以外の残り」のように
[...rest,a] = [1, 2, 3];
としてしまうと、””Uncaught SyntaxError: Rest element must be last element””とエラーが出ます。
残余要素(rest element)はあくまでも一番後ろの要素として定義する必要があります。