Есть ли разница между условно "const a = [...b]" и "const a = b" (b - это массив)? Пример кода внутри.
Мне не удалось увидеть разницы, хотя вариант со спредом считается "копированием массива".

А зачем лишний раз писать точки со скобками, если можно просто присвоить?
Можно присвоить, но они будут не копией, а одним и тем же массивом
Вы в своем примере не просто выводите массив, а измените его, выведите оба и увидите разницу
const q1 = [1, 2, 3];
const q2 = q1;
q1[0] = 666;
console.log(q1, q2);
[666, 2, 3] [666, 2, 3]
Изменились оба одинаково - один и тот же массив
const q1 = [1, 2, 3]
const q2 = [...q1];
q1[0] = 666;
console.log(q1, q2);
[666, 2, 3] [1, 2, 3]
Изменился только q1
Каждый раз поражаюсь новичкам, которые считают в языке что-то "лишним"
Лишнего ничего нет, просто вы еще не умеете это готовить
При использовании второго варианта ты присвоишь ссылку на массив b переменной a. А при использовании spread оператора ты создаешь именно копию массива
почему ты не спросишь у автора кода который ты нам здесь слил? может он тебе расскажет зачем ему там точки нужны были....
или сам подумаешь...
Если вы не уверены, копия или не копия, то поменяйте элемент оригинала и посмотрите, изменился ли он в другой переменной. Если изменился - значит, не копия.
Через спред идет создание новой независимой копии массива, типичный сценарий применения в реальной работе.