Массивы, объекты, функции относятся к типу объектов, который относится к составным типам данных. Как мы знаем, переменная содержит данные, в случае составного типа данных она содержит ссылку, которая является адресом этого конкретного значения в памяти.

вар а= 10; // здесь a содержит значение 10.

var b= [10,20] // b содержит некоторый адрес, например 8023 и т. д., а не 10 и 20.

Поэтому мы не можем клонировать данные в составных типах данных. Для этого используется оператор распространения, то есть три точки (…), он расширяет элементы этого конкретного массива или объекта, и его значения могут использоваться для присвоения какой-либо другой переменной.

Здесь, в строке 12, я использовал оператор распространения. Следовательно, изменение значения в массиве a не повлияло на массив c. В то время как в строке 13 я просто скопировал его, то есть я дал ссылку, поэтому, изменив a, он также изменит c.

{ для не-кодеров или новичков, таких как я.. представьте, что ваш папа купил велосипед и попросил поделиться с вашим братом. Так велосипед принадлежит вам обоим. Однажды твой брат взял твой велосипед и припарковал его на шоссе, и его раздавил грузовик, по вине твоего брата ты потерял велосипед. Но что, если у вас есть возможность клонировать его, как будто напечатав, с помощью магии созидания, даже если велосипед вашего брата раздавится, ваш все равно будет у вас.}