Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

hérisson Знаток (334), открыт 17 часов назад
Мне не удалось увидеть разницы, хотя вариант со спредом считается "копированием массива".А зачем лишний раз писать точки со скобками, если можно просто присвоить?
4 ответа
Оракул Оракул (62236) 16 часов назад
Можно присвоить, но они будут не копией, а одним и тем же массивом
Вы в своем примере не просто выводите массив, а измените его, выведите оба и увидите разницу
 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
Каждый раз поражаюсь новичкам, которые считают в языке что-то "лишним"
Лишнего ничего нет, просто вы еще не умеете это готовить
Собака Профи (597) 9 часов назад
Через спред идет создание новой независимой копии массива, типичный сценарий применения в реальной работе.
Андрей Панарин Искусственный Интеллект (253888) 7 часов назад
Если вы не уверены, копия или не копия, то поменяйте элемент оригинала и посмотрите, изменился ли он в другой переменной. Если изменился - значит, не копия.
Dlazder Мудрец (17156) 7 часов назад
При использовании второго варианта ты присвоишь ссылку на массив b переменной a. А при использовании spread оператора ты создаешь именно копию массива
Похожие вопросы