Top.Mail.Ru
Ответы

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

Мне не удалось увидеть разницы, хотя вариант со спредом считается "копированием массива".

А зачем лишний раз писать точки со скобками, если можно просто присвоить?

По дате
По рейтингу
Аватар пользователя
Новичок
5мес

Можно присвоить, но они будут не копией, а одним и тем же массивом
Вы в своем примере не просто выводите массив, а измените его, выведите оба и увидите разницу

123456
 const q1 = [1, 2, 3];
const q2 = q1; 
q1[0] = 666; 
console.log(q1, q2); 
[666, 2, 3] [666, 2, 3] 
Изменились оба одинаково - один и тот же массив 
123456
 const q1 = [1, 2, 3]  
const q2 = [...q1];   
q1[0] = 666;   
console.log(q1, q2);  
[666, 2, 3] [1, 2, 3] 
Изменился только q1 

Каждый раз поражаюсь новичкам, которые считают в языке что-то "лишним"
Лишнего ничего нет, просто вы еще не умеете это готовить

Аватар пользователя
Мудрец
5мес

При использовании второго варианта ты присвоишь ссылку на массив b переменной a. А при использовании spread оператора ты создаешь именно копию массива

Аватар пользователя
Искусственный Интеллект
5мес

почему ты не спросишь у автора кода который ты нам здесь слил? может он тебе расскажет зачем ему там точки нужны были....
или сам подумаешь...

Аватар пользователя
Искусственный Интеллект
5мес

Если вы не уверены, копия или не копия, то поменяйте элемент оригинала и посмотрите, изменился ли он в другой переменной. Если изменился - значит, не копия.

Аватар пользователя
Профи
5мес

Через спред идет создание новой независимой копии массива, типичный сценарий применения в реальной работе.